1 字符串駐留
如果上面例子返回True,但是下面例子為什麼是False:
這與Cpython 編譯優化相關,行為稱為字符串駐留,但駐留的字符串中只包含字母,數字或下劃線。
2 相同值的不可變對象
這是因為具有相同值的不可變對象在Python中始終具有相同的哈希值
由於存在哈希衝突,不同值的對象也可能具有相同的哈希值。
3 對象銷燬順序
創建一個類SE:
創建兩個SE實例,使用is判斷:
創建兩個SE實例,使用id判斷:
調用id函數, Python 創建一個 SE 類的實例,並使用id函數獲得內存地址後,銷燬內存丟棄這個對象。
當連續兩次進行此操作, Python會將相同的內存地址分配給第二個對象,所以兩個對象的id值是相同的。
但是is行為卻與之不同,通過打印順序就可以看到。
4 充分認識for
為什麼不是執行一次就退出?
按照for在Python中的工作方式, i = 10 並不會影響循環。range(5)生成的下一個元素就被解包,並賦值給目標列表的變量i.
5 認識執行時機
g為生成器,list(g)後返回[1,3,5],因為每個元素肯定至少都出現一次。所以這個結果這不足為奇。但是,請看下例:
請問,list(g)等於多少?這不是和上面那個例子結果一樣嗎,結果也是[1,3,5],但是:
這有些不可思議
原因在於:生成器表達式中, in 子句在聲明時執行, 而條件子句則是在運行時執行。
所以代碼:
等價於:
看明白嗎?
以上就是五個Python小特性,都很有意思,結果確實出乎意料。相信瞭解這些好玩的特性後,大家對Python的認識更近一步了,恭喜大家。
如果你處於想學Python或者正在學習Python,Python的教程不少了吧,但是是最新的嗎?
說不定你學了可能是兩年前人家就學過的內容,在這小編分享一波2020最新的Python教程。
以上這些教程小編已經為大家打包準備好了,希望對正在學習的你有所幫助!
獲取方式,私信小編 “ 資料 ”,即可免費獲取哦!
閱讀更多 松鼠愛吃餅乾 的文章