Python PEP8 編碼規範 命名規範

  Python庫的命名規範很亂,歷來沒能作到徹底一致。可是目前有一些推薦的命名標準。新的模塊和包(包括第三方框架)應該用這套標準,但當一個已有庫採用了不一樣的風格,推薦保持內部一致性。程序員

最重要的原則

  那些暴露給用戶的API接口的命名,應該遵循反映使用場景而不是實現的原則。api

描述:命名分格

  有許多不一樣的命名風格。這裏可以幫助你們識別正在使用什麼樣的命名風格,而不考慮他們爲何使用。 框架

如下是常見的命名方式:socket

  • b(單個小寫字母)
  • B(單個大寫字母)
  • lowercase 小寫字母
  • lower_case_with_underscores 使用下劃線分隔的小寫字母
  • UPPERCASE 大寫字母
  • UPPER_CASE_WITH_UNDERSCORES 使用下劃線分隔的大寫字母
  • CapitalizedWords(或者叫 CapWords,或者叫CamelCase 駝峯命名法 —— 這麼命名是由於字母看上去有起伏的外觀5)。有時候也被稱爲StudlyCaps。 
    注意:當在首字母大寫的風格中用到縮寫時,全部縮寫的字母用大寫,所以,HTTPServerError 比 HttpServerError 好。
  • mixedCase(不一樣於首字母大寫,第一個單詞的首字母小寫)
  • Capitalized_Words_With_Underscores(巨醜無比!)

  也有用惟一的短前綴把相關命名組織在一塊兒的方法。這在Python中不經常使用,但仍是提一下。好比,os.stat()函數中包含相似以st_mode,st_size,st_mtime這種傳統命名方式命名的變量。(這麼作是爲了與 POSIX 系統的調用一致,以幫助程序員熟悉它。) 函數

  X11庫的全部公共函數都加了前綴X。在Python裏面不必這麼作,由於屬性和方法在調用的時候都會用類名作前綴,函數名用模塊名作前綴。 字體

另外,下面這種用前綴或結尾下劃線的特殊格式是被承認的(一般和一些約定相結合):.net

  • _single_leading_underscore:(單下劃線開頭)弱「內部使用」指示器。好比 from M import * 是不會導入如下劃線開始的對象的。
  • single_trailing_underscore_:(單下劃線結尾)這是避免和Python內部關鍵詞衝突的一種約定,好比:Tkinter.Toplevel(master, class_=’ClassName’)
  • __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

相關文章
相關標籤/搜索