[Effective Python Selection] PEP8風格指南精選
PEP 8又稱為Python Enhancement Proposal #8是python程式碼編寫格式的風格指南。
當然,我們可以用任何想要的方式去撰寫python程式碼,只要語法正確就行了
然而使用一致的Style好處,就是讓我們的程式碼更具備可讀性、更易親近,在一個社群或團隊中,能促使專案協作的更順利。
Effective Python這一本書(作者在Google 工作),列出幾個必定遵守的規則
a.空白(whitespace)
1.使用空格,而非tabs來縮排(這個我常常犯)
2.使用四個空格來作為每一層語法有意義的縮排
3.文字行的長度應為79個字元或更短(我也很難做到)
4.在一個檔案中,函式(functions)與類別(classes)應以兩個空白文字行(two blank line)隔開
5.在一個類別中,方法(methods)應以一個空白文字行隔開
6.別在串列索引、函式呼叫或關鍵字引數指定的周圍放上空格
7.變數指定的前後只放上單一個空格variable = value
b.命名(naming)
1.函式、變數與屬性(attribute)應為lowercase_underscore格式
2.受保護的實體屬性,應為_leading_underscore格式
3.私有的實體屬性,應為__double_leading_underscore格式
4.類別與例外,應為CapitalizeWord格式
5.模組層級的常數應為ALL_CAPS格式
6.類別中的實體方法,應使用self作為第一個變數的名稱(它指向該物件)
7.類別方法,應使用cls作為第一個參數的名稱(它指向該類別)
c.運算式與述句(statements)
1.使用行內否定(例如,if a is not b),而非否定正向的運算式(if not a is b)
2.別用查驗長度的方式(if len(somelist) == 0)檢查空值(empty value,像是[] 或”),使用if not somelist並假設空值會隱含地被估算為False)
3.對待非空值(non-empty values,像[1]或’hi’)的方式也相同if somelist會被隱含地估算為True
4.避免單行的if述句、for或while迴圈或except複合述句,將它們分多行吧
5.import述句一定要放在一個檔案的頂端
6.匯入時,永遠都用模組(modules)的絕對名稱,而非相對於目前模組路徑的名稱。(from bar import foo, not import foo)
7.如果非得使用相對匯入,就使用明確的語法,from . import foo
8.匯入的區段順序應為如此,標準程式庫模組–>第3方模組–>自己的模組。每個字區段內應以字母順序來匯入模組
註:
Pylint是熱門的python應始碼靜態分析器,Pylint會自動強制施行PEP 8風格指南,並偵測Python程式中其他類型的常見錯誤。
Pylint+Pycharm組合技:
2 Replies to “[Effective Python Selection] PEP8風格指南精選”
我都在Editor把Tab換成四個空白, 寫的時候按tab
pycharm的tab預設好像就是四個空白,所以不用換,有這套我覺得我好像個笨蛋…XD