[Effective Python Selection] PEP8風格指南精選

[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組合技:

http://softwaretester.info/integrate-pylint-in-pycharm/

2 Replies to “[Effective Python Selection] PEP8風格指南精選”

    1. pycharm的tab預設好像就是四個空白,所以不用換,有這套我覺得我好像個笨蛋…XD

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *