Python 代碼風格 和 PEP8 Python 的代碼風格由 PEP 8 描述。這個文檔描述了 Python 編程風格的方方面面。在遵照這個文檔的條件下,不一樣程序員編寫的 Python 代碼能夠保持最大程度的類似風格。這樣就易於閱讀,易於在程序員之間交流。 1 變量 常量 : 大寫加下劃線 USER_CONSTANT 對於不會發生改變的全局變量,使用大寫加下劃線。 私有變量 : 小寫和一個前導下劃線 _private_value Python 中不存在私有變量一說,如果遇到須要保護的變量,使用小寫和一個前導下劃線。但這只是程序員之間的一個約定,用於警告說明這是一個私有變量,外部類不要去訪問它。但實際上,外部類仍是能夠訪問到這個變量。 內置變量 : 小寫,兩個前導下劃線和兩個後置下劃線 __class__ 兩個前導下劃線會致使變量在解釋期間被改名。這是爲了不內置變量和其餘變量產生衝突。用戶定義的變量要嚴格避免這種風格。以避免致使混亂。 2 函數和方法 整體而言應該使用,小寫和下劃線。但有些比較老的庫使用的是混合大小寫,即首單詞小寫,以後每一個單詞第一個字母大寫,其他小寫。但如今,小寫和下劃線已成爲規範。 私有方法 : 小寫和一個前導下劃線 def _secrete(self): print "don't test me." 這裏和私有變量同樣,並非真正的私有訪問權限。同時也應該注意通常函數不要使用兩個前導下劃線(當遇到兩個前導下劃線時,Python 的名稱改編特性將發揮做用)。特殊函數後面會說起。 特殊方法 : 小寫和兩個前導下劃線,兩個後置下劃線 def __add__(self, other): return int.__add__(other) 這種風格只應用於特殊函數,好比操做符重載等。 函數參數 : 小寫和下劃線,缺省值等號兩邊無空格 def connect(self, user=None): self._user = user 3 類 類老是使用駝峯格式命名,即全部單詞首字母大寫其他字母小寫。類名應該簡明,精確,並足以從中理解類所完成的工做。常見的一個方法是使用表示其類型或者特性的後綴,例如: SQLEngine MimeTypes 對於基類而言,可使用一個 Base 或者 Abstract 前綴 BaseCookie AbstractGroup class UserProfile(object): def __init__(self, profile): return self._profile = profile def profile(self): return self._profile 4 模塊和包 除特殊模塊 __init__ 以外,模塊名稱都使用不帶下劃線的小寫字母。 如果它們實現一個協議,那麼一般使用lib爲後綴,例如: import smtplib import os import sys 5 關於參數 5.1 不要用斷言來實現靜態類型檢測 斷言能夠用於檢查參數,但不該僅僅是進行靜態類型檢測。 Python 是動態類型語言,靜態類型檢測違背了其設計思想。斷言應該用於避免函數不被毫無心義的調用。 5.2 不要濫用 *args 和 **kwargs *args 和 **kwargs 參數可能會破壞函數的健壯性。它們使簽名變得模糊,並且代碼經常開始在不該該的地方構建小的參數解析器。 6 其餘 6.1 使用 has 或 is 前綴命名布爾元素 is_connect = True has_member = False 6.2 用複數形式命名序列 members = ['user_1', 'user_2'] 6.3 用顯式名稱命名字典 person_address = {'user_1':'10 road WD', 'user_2' : '20 street huafu'} 6.4 避免通用名稱 諸如 list, dict, sequence 或者 element 這樣的名稱應該避免。 6.5 避免現有名稱 諸如 os, sys 這種系統已經存在的名稱應該避免。 7 一些數字 一行列數 : PEP 8 規定爲 79 列,這有些苛刻了。根據本身的狀況,好比不要超過滿屏時編輯器的顯示列數。這樣就能夠在不動水平遊標的狀況下,方便的查看代碼。 一個函數 : 不要超過 30 行代碼, 便可顯示在一個屏幕類,能夠不使用垂直遊標便可看到整個函數。 一個類 : 不要超過 200 行代碼,不要有超過 10 個方法。 一個模塊 不要超過 500 行。 8 驗證腳本 能夠安裝一個 pep8 腳本用於驗證你的代碼風格是否符合 PEP8。 >>easy_install pep8 >>pep8 -r --ignoire E501 Test.py 這個命令行的意思是,重複打出錯誤,而且忽略 501 錯誤(代碼超過 79 行)。