GitHub 上有個很是牛逼的倉庫,做者收集了不少有趣且不爲人知的 Python 「特性」。這些特性有些是真正的特性,也有些是陷阱,由於光從表面看起來就以爲反人類直覺,而全部的一切,其實都是 Cpython 內部實現中利弊之間的的權衡,有優勢就有缺點。舉個和字符串相關的特別例子:python
>>> a = "wtf"
>>> b = "wtf"
>>> a is b
True
複製代碼
這個比較好理解,a 和 b 指向同一個對象。git
>>> a = "wtf!"
>>> b = "wtf!"
>>> a is b
False
複製代碼
多了一個感嘆號❗,兩個變量指向的就不是同一個對象了。github
再來看:微信
>>> a, b = "wtf!", "wtf!"
>>> a is b
True
複製代碼
若是把兩個變量寫在一行,又指向同一個對象了。初學者看了一臉懵逼,即便你是有經驗的 Python 開發者,第一次見到這種狀況也會大爲驚訝,原來 Python 中還有如此騷操做。 若是把代碼放在IDE中執行,結果又不同:性能
a = "wtf!"
b = "wtf!"
print(a is b) # True
複製代碼
輸出結果是 True,是否是以爲太匪夷所思了。 其實,這裏面涉及到的知識點是CPython 爲了提升性能對字符串對象作的優化,涉及到字符串的 intern 機制,還有代碼塊的知識等概念。優化
固然這個庫還總結了不少不少相似讓你驚訝的操做,好比關於哈希操做,有關字典特性,默承認變參數陷阱等等。總共有近100來個知識點總結。強烈建議你們好好研讀,有利於對 Pytho 的進一步提升。目前這個庫已經有將近10000人關注,並且如今有網友提供了中文版了,這無疑給了不習慣閱讀英語閱的人有一個利好消息。spa
英文地址:github.com/satwikkansa…
中文地址:github.com/leisurelich…code
方便你閱讀,我將其製做了一份PDF格式了,方便你離線閱讀。連接: pan.baidu.com/s/15eM-hryL… 提取碼: 6p26 你也能夠在微信公衆號「Python之禪」後臺回覆關鍵詞「1」獲取其它電子書對象
PS:有些人對標題表示反感,抱歉,換個普通點的。還有,大家若是不喜歡,直接X掉頁面,謝謝。開發