Python風格規範
阿新 • • 發佈:2017-09-16
acc pen 分號 res -i str map lai parent
Python風格規範
分號
- 不要在行尾加上分號,也不要用分號將兩條命令分開;
行長度
- 每行長度不超過80個字符;
-
不要使用反斜杠連接行,可以使用圓括號來連接;
# True x = (‘This will build a very long long ‘ ‘long long long long long long string‘)
-
URL可以單獨放一行,不需要分割;
括號
-
除非是實現行連接,否則不要在返回語句或者條件語句中使用括號;
# wrong def foo(): if (True): print(‘True‘) return (True)
縮進
- 用4個空格來縮進代碼,不要使用Tab。
空行
- 頂級定義(函數定義或者類定義)之間空兩行,方法定義之間空一行;
空格
- 括號兩邊不要有空格;
- 不要在逗號,分號,冒號前面加空格,而是在後面加;
- 字典中冒號前面不用加空格,而是在後面加;
- 二元操作符兩邊都要加上一個空格,包括=、<、>、in、not in等等;
-
不要用空格垂直對齊多行間的標記;
# True foo = 1000 # comment long_name = 2 # comment that should not be aligned
註釋
- 一個函數除非是非常短小或者簡單明了,否則都應該有註釋;
-
函數註釋需要包括說明、參數、返回、異常;
def fetch_bigtable_rows(big_table, keys, other_silly_variable=None): """Fetches rows from a Bigtable.
-
類的註釋包括說明,如果屬性是公共屬性,那麽還需要包括屬性;
class SampleClass(object): """Summary of class here. Longer class information.... Longer class information.... Attributes: likes_spam: A boolean indicating if we like SPAM or not. eggs: An integer count of the eggs we have laid. """ def __init__(self, likes_spam=False): """Inits SampleClass with blah.""" self.likes_spam = likes_spam self.eggs = 0 def public_method(self): """Performs operation blah."""
-
塊註釋和行註釋應該寫代碼做了什麽(如果較復雜),而不是描述代碼;
-
使用"""字符來標註;
類
- 如果一個類不繼承自其它類,就顯式的從object繼承,不要什麽都不寫;
字符串
- 避免在循環中使用+來連接字符串,推薦使用數組的join;
- 在同一個文件中, 保持使用字符串引號的一致性;
TODO註釋
- 為臨時代碼使用TODO註釋, 它是一種短期解決方案;
-
TODO註釋應該在所有開頭處包含”TODO”字符串,緊跟著是用括號括起來的你的名字,email地址或其它標識符,然後是一個可選的冒號,接著必須有一行註釋,解釋要做什麽。
# True # TODO([email protected]): Use a "*" here for string repetition. # TODO(Zeke) Change this to use relations.
導入格式
-
每個導入應該獨占一行;
# False import os, sys # True import os import sys
-
導入應該按照最通用到最不通用的順序進行排序,首先是1. 標準庫;2.第三方庫;3. 模塊庫;
語句
- 除了exp if else,語句最好單獨一行;
命名
- 使用單下劃線開頭表示模塊變量或者函數是protected的;
- 使用雙下劃線開頭表示實例變量或者方法是類內私有的;
- 類名應該使用大寫字母開頭的單詞;
- 模塊名和函數名和參數名應該使用小寫加下劃線的方式;
Main
-
為了避免倒入模塊時被執行,需要加上mian的判斷;
def main(): ... if __name__ == ‘__main__‘: main()
Python風格規範