一份鮮為人知的Python特性
GitHub 上有個非常牛逼的倉庫,作者收集了很多有趣且鮮為人知的 Python “特性”。這些特性有些是真正的特性,也有些是陷阱,因為光從表面看起來就覺得反人類直覺,而所有的一切,其實都是 Cpython 內部實現中利弊之間的的權衡,有優點就有缺點。舉個和字串相關的特別例子:
>>> a = "wtf"
>>> b = "wtf"
>>> a is b
True
這個比較好理解,a 和 b 指向同一個物件。
>>> a = "wtf!"
>>> b = "wtf!"
>>> a is b
False
多了一個感嘆號❗,兩個變數指向的就不是同一個物件了。
再來看:
>>> 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萬人關注,而且現在有網友提供了中文版了,這無疑給了不習慣閱讀英語閱的人有一個利好訊息。
英文地址:https://github.com/satwikkansal/wtfpython
中文地址:https://github.com/leisurelicht/wtfpython-cn
方便你閱讀,我將其製作了一份PDF格式了,方便你離線閱讀。你可以在微信公眾號「Python之禪」後臺回覆關鍵詞「2」獲取這本電子書!
推薦閱讀
優秀如你都在關注
相關文章
- Python:鮮為人知的功能特性(上)Python
- Python:鮮為人知的功能特性(下)Python
- 有趣且鮮為人知的 Python “特性”Python
- 鮮為人知的 PostgreSQL 特性 - hakibenitaSQL
- 5個 Google Guava 鮮為人知的特性GoGuava
- 5個鮮為人知Java集合特性Java
- C語言有哪些鮮為人知的特性?C語言
- 鮮為人知的 Python 語法Python
- 鮮為人知的python位運算Python
- python“不為人知的”特性Python
- 鮮為人知的JavaScript功能JavaScript
- JavaScript 那些鮮為人知的玩法JavaScript
- [譯] 鮮為人知的資料科學 Python 庫資料科學Python
- 15 個鮮為人知的Unix命令
- 鮮為人知的程式設計真相程式設計
- 10款鮮為人知的PHP框架PHP框架
- 10個鮮為人知的WordPress函式函式
- Google鮮為人知的14項服務Go
- 庫克的14件鮮為人知的軼事
- 這9個鮮為人知的Python庫,你用過幾個?Python
- 11 個鮮為人知的 Linux 命令(1)Linux
- 10 個鮮為人知的 Linux 命令(5)Linux
- 10 個鮮為人知的 Linux 命令(2)Linux
- 10 個鮮為人知的 Linux 命令(3)Linux
- 10 個鮮為人知的 Linux 命令(4)Linux
- 十個鮮為人知的Linux 命令(三)Linux
- 十個鮮為人知的Linux 命令(二)Linux
- 6條鮮為人知的程式設計真相程式設計
- 鮮為人知的Windows XP最佳化(轉)Windows
- 推薦六個鮮為人知的 Composer 命令
- 鮮為人知的軟體專案管理原則專案管理
- 十個鮮為人知的Linux命令 - Part 5Linux
- 25個鮮為人知的谷歌使用技巧——資訊圖谷歌
- 一些鮮為人知的程式設計真相程式設計
- 谷歌11款鮮為人知的低調產品谷歌
- 那些功能逆天,卻鮮為人知的pandas騷操作
- 一些鮮為人知的程式設計事實程式設計
- 這些鮮為人知的前端冷知識,你都GET了嗎?前端