1. 程式人生 > 實用技巧 >python PEP8規範

python PEP8規範

PEP 8風格指南

PEP是Python Enhancement Proposal的縮寫,通常翻譯為“Python增強提案”。每個PEP都是一份為Python社群提供的指導Python往更好的方向發展的技術文件,其中的第8號增強提案(PEP 8)是針對Python語言編訂的程式碼風格指南。儘管我們可以在保證語法沒有問題的前提下隨意書寫Python程式碼,但是在實際開發中,採用一致的風格書寫出可讀性強的程式碼是每個專業的程式設計師應該做到的事情,也是每個公司的程式設計規範中會提出的要求,這些在多人協作開發一個專案(團隊開發)的時候顯得尤為重要。我們可以從Python官方網站的pep8中找到該文件,下面我們對該文件的關鍵部分做一個簡單的總結。

空格的使用

  1. 使用空格來表示縮排而不要用製表符(Tab)。這一點對習慣了其他程式語言的人來說簡直覺得不可理喻,因為絕大多數的程式設計師都會用Tab來表示縮排,但是要知道Python並沒有像C/C++或Java那樣的用花括號來構造一個程式碼塊的語法,在Python中分支和迴圈結構都使用縮排來表示哪些程式碼屬於同一個級別,鑑於此Python程式碼對縮排以及縮排寬度的依賴比其他很多語言都強得多。在不同的編輯器中,Tab的寬度可能是2、4或8個字元,甚至是其他更離譜的值,用Tab來表示縮排對Python程式碼來說可能是一場災難。
  2. 和語法相關的每一層縮排都用4個空格來表示。
  3. 每行的字元數不要超過79個字元,如果表示式因太長而佔據了多行,除了首行之外的其餘各行都應該在正常的縮排寬度上再加上4個空格。
  4. 函式和類的定義,程式碼前後都要用兩個空行進行分隔。
  5. 在同一個類中,各個方法之間應該用一個空行進行分隔。
  6. 二元運算子的左右兩側應該保留一個空格,而且只要一個空格就好。

識別符號命名

PEP 8倡導用不同的命名風格來命名Python中不同的識別符號,以便在閱讀程式碼時能夠通過識別符號的名稱來確定該識別符號在Python中扮演了怎樣的角色(在這一點上,Python自己的內建模組以及某些第三方模組都做得並不是很好)。

  1. 變數、函式和屬性應該使用小寫字母來拼寫,如果有多個單詞就使用下劃線進行連線。
  2. 類中受保護的例項屬性,應該以一個下劃線開頭。
  3. 類中私有的例項屬性,應該以兩個下劃線開頭。
  4. 類和異常的命名,應該每個單詞首字母大寫。
  5. 模組級別的常量,應該採用全大寫字母,如果有多個單詞就用下劃線進行連線。
  6. 類的例項方法,應該把第一個引數命名為self以表示物件自身。
  7. 類的類方法,應該把第一個引數命名為cls以表示該類自身。

表示式和語句

在Python之禪(可以使用import this檢視)中有這麼一句名言:“There should be one-- and preferably only one --obvious way to do it.”,翻譯成中文是“做一件事應該有而且最好只有一種確切的做法”,這句話傳達的思想在PEP 8中也是無處不在的。

  1. 採用內聯形式的否定詞,而不要把否定詞放在整個表示式的前面。例如if a is not b就比if not a is b更容易讓人理解。
  2. 不要用檢查長度的方式來判斷字串、列表等是否為None或者沒有元素,應該用if not x這樣的寫法來檢查它。
  3. 就算if分支、for迴圈、except異常捕獲等中只有一行程式碼,也不要將程式碼和ifforexcept等寫在一起,分開寫才會讓程式碼更清晰。
  4. import語句總是放在檔案開頭的地方。
  5. 引入模組的時候,from math import sqrtimport math更好。
  6. 如果有多個import語句,應該將其分為三部分,從上到下分別是Python標準模組、第三方模組和自定義模組,每個部分內部應該按照模組名稱的字母表順序來排列。