簡潔而優雅的鏈式比較
先看一個示例:
>>> False == False == True
False
你知道這個表達式為什么會會返回 False 嗎?
它的運行原理與下面這個類似:
if 80 < score <= 90:
print("成績良好")
如果你還是不明白,那我再給你整個第一個例子的等價寫法。
>>> False == False and False == True
False
這個用法叫做鏈式比較。
and 和 or 的短路效應
and 和 or 是我們再熟悉不過的兩個邏輯運算符,在 Python 也有它的妙用。
當一個 or 表達式中所有值都為真,Python會選擇第一個值
當一個 and 表達式 所有值都為真,Python 會選擇最后一個值。
示例如下:
>>>(2 or 3) * (5 and 6 and 7)
14 # 2*7
連接多個列表最極客的方式
>>> a = [1,2]
>>> b = [3,4]
>>> c = [5,6]
>>>
>>> sum((a,b,c), [])
[1, 2, 3, 4, 5, 6]
用戶無感知的小整數池
為避免整數頻繁申請和銷毀內存空間,Python 定義了一個小整數池 [-5, 256] 這些整數對象是提前建立好的,不會被垃圾回收。
以下代碼在終端Python環境下測試,如果在IDE中測試,由于 IDE 的影響,效果會有所不同。
>>> a = -6
>>> b = -6
>>> a is b
False
>>> a = 256
>>> b = 256
>>> a is b
True
>>> a = 257
>>> b = 257
>>> a is b
False
>>> a = 257; b = 257
>>> a is b
True
問題又來了:最后一個示例,為啥是True?
因為當你在同一行里,同時給兩個變量賦同一值時,解釋器知道這個對象已經生成,那么它就會引用到同一個對象。如果分成兩行的話,解釋器并不知道這個對象已經存在了,就會重新申請內存存放這個對象。
-
原理
+關注
關注
4文章
550瀏覽量
44942 -
python
+關注
關注
56文章
4806瀏覽量
84935 -
解釋器
+關注
關注
0文章
103瀏覽量
6548
發布評論請先 登錄
相關推薦
評論