Python代碼風格規范.
@1:參數縮進:(2種形式)
<1>
foo = long_function_name(var1, var2, var3, var4) #第1行有參數, 第2行參數與第1行對齊
<2>
foo = long_function_name( var1, var2, var3, var4) #第1行須沒有參數, 第2行前空4個空格, 第3行與第2行對齊
@2:頂級定義之間空2行, 方法定義之間空1行
類中第1個方法前總是應該空1行, 某些函數內部也可以適當的加空行
@3:不要在逗號, 分號, 冒號前面加空格, 但應該在他們后面加(除了在行尾)
@4:二元運算符兩側應該加空格, 但當”=”用於指示關鍵字參數或默認參數時不要加空格,如:
def complex(read, image=0.0): # “=”兩側無空格
@5:總是使用最特化的版本,如/usr/bin/python2.4, 而不是/usr/bin/python2
@6:如果不是"簡短,顯然或函數不被外部可見", 任何函數都需要一個文檔字符串.
@7:對於復雜的操作, 應該在其操作開始前寫上若干行注釋, 對於不是一目了然的代碼, 應該在其行尾添加注釋.
@8:如果一個類不繼承自其它類, 就顯式的從object類繼承, 嵌套類也一樣.
#NO------------------------------------ class SampleClass: pass class OuterClass: class InnerClass: pass #YES----------------------------------- class SampleClass(object): pass class OuterClass(object): class InnerClass(object): pass class ChildClass(ParentClass):
@9: 盡量用format,而不是+. 但如果兩個變量緊挨着,則使用+.
name = "lxw" age = 24 x = "{0}, {1}!".format(name, age) #YES #x = name + ", " + str(age) + "!" #NO sex = "male" #y = "{}{}".format(name, sex) #NO y = name + sex #YES
@10:避免在循環中用+和+=操作符來累加字符串. 由於字符串是不可變的, 這樣做會創建不必要的臨時對象, 並且導致二次方而不是線性的運行時間.
可以將每個子串加入列表, 然后在循環結束后用 .join 連接列表.
#Yes-------------------------- items = ['<table>'] for last_name, first_name in employee_list: items.append('<tr><td>%s, %s</td></tr>' % (last_name, first_name)) items.append('</table>') employee_table = ''.join(items) #No-------------------------- employee_table = '<table>' for last_name, first_name in employee_list: employee_table += '<tr><td>%s, %s</td></tr>' % (last_name, first_name) employee_table += '</table>'
@11:為多行字符串使用三重雙引號,而非三重單引號. 文檔字符串必須使用三重雙引號.
@12:推薦使用with語句以管理文件:
with open("hello.txt") as hello_file: for line in hello_file: print line
@13:每個導入應該獨占一行
#Yes--------------------- import os import sys #No--------------------- import os, sys
@14:Python用下划線作為變量前綴和后綴指定特殊變量。
_xxx 不能用'from module import *'導入
__xxx__ 系統定義名字
__xxx 類中的私有變量名
核心風格:避免用下划線作為變量名的開始。
"單下划線" 開始的成員是proctect成員,意思是只有類對象和子類對象能訪問到這些變量;
"雙下划線" 開始的成員是private成員,意思是只有類對象自己能訪問,連子類對象也不能訪問到這個數據。
Reference:
Google 開源項目風格指南PYTHON風格規范: http://zh-google-styleguide.readthedocs.org/en/latest/google-python-styleguide/python_style_rules/