Python社區提出了編寫Python代碼的PEP8(https://www.python.org/dev/peps/pep-0008/)標準。基本上,歸納規則爲:
1、每個縮進層級使用4個空格
2、每行最多79個字符
3、頂層函數或類的定義之間空兩行(特別容易漏,漏的話,是報E302 expected 2 blank lines, found 1)
4、採用ASCII或者UTF-8編碼文件
5、每條import導入一個模塊,導入放在代碼頂端,導入順序是先標準庫,第三方庫,本地庫
6、 小括號,大括號,中括號之間的逗號沒有額外的空格
7、類命名採用駱駝命名法,CamelCase;函數用小寫字符
8、函數命名使用小寫字符,例如xxx_xxx_xxx;用下劃線開頭定義私有的屬性或方法,如_xxx
這些規範其實是容易遵守的,也很合理,但是有時會疏忽,這時可以嘗試利用工具達到事半功倍的效果。pep8就是用來解決規範的問題的,自動檢查python文件是否符合PEP8規範。
首先安裝pep8; pip install -U pep8 (pip安裝:http://www.linuxde.net/2014/05/15576.html);OK,開始驗證代碼了
測試代碼:const.py (91條建議裏的一個代碼,也存在編碼規範問題)
class _const:
class ConstError(TypeError): pass
class ConstCaseError(ConstError): pass
def __setattr__(self, name, value):
if self.__dict__.has_key(name):
raise self.ConstError, "Can't change const.%s" % name
if not name.isupper():
raise self.ConstCaseError, "const name %s is not all upper" % name
self.__dict__[name] = value
import sys
sys.modules[__name__] = _const()
# pep8 const.py
const.py:2:32: E701 multiple statements on one line (colon)
const.py:3:5: E301 expected 1 blank line, found 0
const.py:3:37: E701 multiple statements on one line (colon)
const.py:6:25: W601 .has_key() is deprecated, use 'in'
const.py:12:1: E402 module level import not at top of file