Python庫的命名規範很亂,歷來沒能作到徹底一致。可是目前有一些推薦的命名標準。新的模塊和包(包括第三方框架)應該用這套標準,但當一個已有庫採用了不一樣的風格,推薦保持內部一致性。程序員
那些暴露給用戶的API接口的命名,應該遵循反映使用場景而不是實現的原則。api
有許多不一樣的命名風格。這裏可以幫助你們識別正在使用什麼樣的命名風格,而不考慮他們爲何使用。 框架
如下是常見的命名方式:socket
也有用惟一的短前綴把相關命名組織在一塊兒的方法。這在Python中不經常使用,但仍是提一下。好比,os.stat()函數中包含相似以st_mode,st_size,st_mtime這種傳統命名方式命名的變量。(這麼作是爲了與 POSIX 系統的調用一致,以幫助程序員熟悉它。) 函數
X11庫的全部公共函數都加了前綴X。在Python裏面不必這麼作,由於屬性和方法在調用的時候都會用類名作前綴,函數名用模塊名作前綴。 字體
另外,下面這種用前綴或結尾下劃線的特殊格式是被承認的(一般和一些約定相結合):.net
__double_leading_underscore
:(雙下劃線開頭)當這樣命名一個類的屬性時,調用它的時候名字會作矯正(在類FooBar中,__boo
變成了_FooBar__boo
;見下文)。__double_leading_and_trailing_underscore__
:(雙下劃線開頭,雙下劃線結尾)「magic」對象或者存在於用戶控制的命名空間內的屬性,例如:__init__
,__import__
或者__file__
。除了做爲文檔以外,永遠不要命這樣的名。 永遠不要使用字母‘l’(小寫的L),‘O’(大寫的O),或者‘I’(大寫的I)做爲單字符變量名。
在有些字體裏,這些字符沒法和數字0和1區分,若是想用‘l’,用‘L’代替。code
模塊應該用簡短全小寫的名字,若是爲了提高可讀性,下劃線也是能夠用的。Python包名也應該使用簡短全小寫的名字,但不建議用下劃線。
當使用C或者C++編寫了一個依賴於提供高級(更面向對象)接口的Python模塊的擴展模塊,這個C/C++模塊須要一個下劃線前綴(例如:_socket)對象
類名通常使用首字母大寫的約定。
在接口被文檔化而且主要被用於調用的狀況下,可使用函數的命名風格代替。
注意,對於內置的變量命名有一個單獨的約定:大部份內置變量是單個單詞(或者兩個單詞鏈接在一塊兒),首字母大寫的命名法只用於異常名或者內部的常量。blog
由於異常通常都是類,全部類的命名方法在這裏也適用。然而,你須要在異常名後面加上「Error」後綴(若是異常確實是一個錯誤)。
咱們但願這一類變量只在模塊內部使用。)約定和函數命名規則同樣。
經過 from M import * 導入的模塊應該使用all機制去防止內部的接口對外暴露,或者使用在全局變量前加下劃線的方式(代表這些全局變量是模塊內非公有)。
函數名應該小寫,若是想提升可讀性能夠用下劃線分隔。
大小寫混合僅在爲了兼容原來主要以大小寫混合風格的狀況下使用(好比 threading.py),保持向後兼容性。
始終要將 self 做爲實例方法的的第一個參數。
始終要將 cls 做爲類靜態方法的第一個參數。
若是函數的參數名和已有的關鍵詞衝突,在最後加單一下劃線比縮寫或隨意拼寫更好。所以 class_ 比 clss 更好。(也許最好用同義詞來避免這種衝突)
遵循這樣的函數命名規則:使用下劃線分隔小寫單詞以提升可讀性。
在非共有方法和實例變量前使用單下劃線。
經過雙下劃線前綴觸發Python的命名轉換規則來避免和子類的命名衝突。
Python經過類名對這些命名進行轉換:若是類 Foo 有一個叫 __a
的成員變量, 它沒法經過 Foo.__a
訪問。(執着的用戶能夠經過 Foo._Foo__a
訪問。)通常來講,前綴雙下劃線用來避免類中的屬性命名與子類衝突的狀況。
注意:關於__names
的用法存在爭論。
常量一般定義在模塊級,經過下劃線分隔的全大寫字母命名。例如: MAX_OVERFLOW 和 TOTAL。
其餘後續更新:
https://blog.csdn.net/ratsniper/article/details/78954852