標籤:
Python 增強建議#8,也被稱為PEP8,是格式化Python代碼的風格指引。只要符合文法,你可以隨心所欲地寫Python代碼。然而,一致的風格使你的代碼更加親和與易於理解,及在一個大型社區中與其他Python程式員分享時促進協作。但是即使只有你自己一個人讀你的代碼,遵循這個風格規約將會使得以後修改起來更加容易。
PEP8有一些列豐富的關於怎樣去編寫清晰乾淨的Python代碼的細節。隨著Python語言的演變,它將會持續更新。這是非常值得去閱讀整個線上規約的(http://www.python.org/dev/peps/pep-0008)。這裡有一些規約你應該確保去遵循的:
空格:在Python裡,空格是顯著的文法。在代碼清晰度上,Python程式員對空格的作用是特別敏感的。
- 對於縮排,使用空格來替換Tab鍵;
- 每一個文法上的縮排層級使用4個空格;
- 行的長度應該是79個字元或者更少;
- 長的運算式在下一行的延續縮排應該比正常縮排層級的額外多4個空格;
- 在一個檔案裡,函數和類應該有兩個空行分隔;
- 在類裡面,方法應該被一個空行分隔;
- 不要再列表的索引,函數調用或者關鍵字參數賦值中添加空格;
- 在變數賦值的前後,有且只添加一個空格。
命名:PEP8建議在這種語言的不同部分使用獨立的命名風格。這將使得在閱讀代碼的時候,更加容易區分每一個名字對應的類型。
- 函數,變數,和屬性應該使用lowercase_underscore格式;
- 保護型的執行個體屬性應該使用_leading_underscore格式;
- 私人的執行個體屬性應該使用__double_leading_underscore格式;
- 類和異常應該使用CApitalizedWord格式;
- 模組層級的常量應該使用ALL_CAPS格式;
- 類的執行個體方法應該使用self作為第一個參數的名字(它指向這個對象);
- 類方法應該使用cls作為第一個參數的名字(它指向這個類)。
運算式和聲明:Python的哲學是:“應當只有一種——而且是最好的一種——明確的方式去做一件事。” 對於運算式和聲明,PEP8在它的指引裡嘗試去修改這種風格。
- 用內聯的否定(if a is not b)代替肯定運算式的否定(if not a is b);
- 不要通過檢測長度(if len(somelist) == 0)來檢測空值(比如[]或者‘’), 使用 if not somelist 來假設空值隱含評估是False;
- 一些不是空值( 比如[1] 或 ‘hi’)的東西,語句if somelist 是隱含是True對於非空值;
- 避免一行中包含if語句,for和while迴圈,和except複合陳述式,把它們分開在多行會更加清晰。
- 總是吧import語句放在檔案的頂部;
- 當匯入模組的時候總是使用模組的名字,不要依賴於當前模組所屬的路徑。比如:從bar包中匯入foo模組,你應該使用:from bar import foo,不要僅僅是:import foo;
- 如果你必須相對的匯入,請使用明確地文法:from . impor foo;
- 各部分中的匯入應該遵循以下順序:標準庫模組,第三方庫模組,你自己的模組。每一個字部分的匯入應該按照字母排序。
NOTE:
Pylint 工具(http://www.pylint.org/) 是一個很流行的Python源碼靜態分析器,Pylint提供了在Python程式中對於PEP8風格規約和檢查多種其它通用錯誤的類型的自動化檢查。
想想和記下來
- 當寫Python代碼的時候,總是遵循PEP8風格規約;
- 在一個大的Pthon社區中與他們進行協作交流是採用一個通用的風格;
- 使用一致的風格使得你的代碼在今後更容易修改。
轉載註明出處
原文(英文):effective python, item 2
譯文(中文):http://www.cnblogs.com/reanote/p/effective_python_item_2
備忘(提示):著作權歸原作者所有,如侵犯您的著作權,請郵件聯絡我,我將會收到通知後,儘快刪除!
Effective Python 條目二:遵循PEP8風格規約