5個有趣的Python小知識,結果令人意外


5個有趣的Python小知識,結果令人意外

1 字符串駐留

5個有趣的Python小知識,結果令人意外

如果上面例子返回True,但是下面例子為什麼是False:

5個有趣的Python小知識,結果令人意外

這與Cpython 編譯優化相關,行為稱為字符串駐留,但駐留的字符串中只包含字母,數字或下劃線。

2 相同值的不可變對象

5個有趣的Python小知識,結果令人意外

這是因為具有相同值的不可變對象在Python中始終具有相同的哈希值

由於存在哈希衝突,不同值的對象也可能具有相同的哈希值。

3 對象銷燬順序

創建一個類SE:

5個有趣的Python小知識,結果令人意外

創建兩個SE實例,使用is判斷:

5個有趣的Python小知識,結果令人意外

創建兩個SE實例,使用id判斷:

5個有趣的Python小知識,結果令人意外

調用id函數, Python 創建一個 SE 類的實例,並使用id函數獲得內存地址後,銷燬內存丟棄這個對象。

當連續兩次進行此操作, Python會將相同的內存地址分配給第二個對象,所以兩個對象的id值是相同的。

但是is行為卻與之不同,通過打印順序就可以看到。

4 充分認識for  


5個有趣的Python小知識,結果令人意外

為什麼不是執行一次就退出?

按照for在Python中的工作方式, i = 10 並不會影響循環。range(5)生成的下一個元素就被解包,並賦值給目標列表的變量i.


5 認識執行時機


5個有趣的Python小知識,結果令人意外

g為生成器,list(g)後返回[1,3,5],因為每個元素肯定至少都出現一次。所以這個結果這不足為奇。但是,請看下例:

5個有趣的Python小知識,結果令人意外

請問,list(g)等於多少?這不是和上面那個例子結果一樣嗎,結果也是[1,3,5],但是:


5個有趣的Python小知識,結果令人意外

這有些不可思議

原因在於:生成器表達式中, in 子句在聲明時執行, 而條件子句則是在運行時執行。

所以代碼:

5個有趣的Python小知識,結果令人意外

等價於:

5個有趣的Python小知識,結果令人意外

看明白嗎?

以上就是五個Python小特性,都很有意思,結果確實出乎意料。相信瞭解這些好玩的特性後,大家對Python的認識更近一步了,恭喜大家。

如果你處於想學Python或者正在學習Python,Python的教程不少了吧,但是是最新的嗎?

說不定你學了可能是兩年前人家就學過的內容,在這小編分享一波2020最新的Python教程。


5個有趣的Python小知識,結果令人意外


5個有趣的Python小知識,結果令人意外


以上這些教程小編已經為大家打包準備好了,希望對正在學習的你有所幫助!

獲取方式,私信小編 “ 資料 ”,即可免費獲取哦!


分享到:


相關文章: