目錄
- Python 風(fēng)格規(guī)范(Google)
- 分號(hào)
- 行長度
- 括號(hào)
- 縮進(jìn)
- 空行
- 空格
Python 風(fēng)格規(guī)范(Google)
本項(xiàng)目并非 Google 官方項(xiàng)目, 而是由國內(nèi)程序員憑熱情創(chuàng)建和維護(hù)。
如果你關(guān)注的是 Google 官方英文版, 請(qǐng)移步 Google Style Guide
以下代碼中 Yes 表示推薦,No 表示不推薦。
分號(hào)
不要在行尾加分號(hào), 也不要用分號(hào)將兩條命令放在同一行。
行長度
每行不超過80個(gè)字符
以下情況除外:
- 長的導(dǎo)入模塊語句注釋里的URL
- 不要使用反斜杠連接行。
Python會(huì)將 圓括號(hào), 中括號(hào)和花括號(hào)中的行隱式的連接起來 , 你可以利用這個(gè)特點(diǎn).
如果需要, 你可以在表達(dá)式外圍增加一對(duì)額外的圓括號(hào)。
推薦: foo_bar(self, width, height, color='black', design=None, x='foo',
emphasis=None, highlight=0)
if (width == 0 and height == 0 and
color == 'red' and emphasis == 'strong'):
如果一個(gè)文本字符串在一行放不下, 可以使用圓括號(hào)來實(shí)現(xiàn)隱式行連接:
x = ('這是一個(gè)非常長非常長非常長非常長 '
'非常長非常長非常長非常長非常長非常長的字符串')
在注釋中,如果必要,將長的URL放在一行上。
Yes: # See details at
# http://www.example.com/us/developer/documentation/api/content/v2.0/csv_file_name_extension_full_specification.html
No: # See details at
# http://www.example.com/us/developer/documentation/api/content/\
# v2.0/csv_file_name_extension_full_specification.html
注意上面例子中的元素縮進(jìn); 你可以在本文的 :ref
:`縮進(jìn) indentation
>`部分找到解釋.
括號(hào)
寧缺毋濫的使用括號(hào)
除非是用于實(shí)現(xiàn)行連接, 否則不要在返回語句或條件語句中使用括號(hào).
不過在元組兩邊使用括號(hào)是可以的.
Yes: if foo:
bar()
while x:
x = bar()
if x and y:
bar()
if not x:
bar()
return foo
for (x, y) in dict.items(): ...
No: if (x):
bar()
if not(x):
bar()
return (foo)
縮進(jìn)
用4個(gè)空格來縮進(jìn)代碼
絕對(duì)不要用tab, 也不要tab和空格混用.
對(duì)于行連接的情況, 你應(yīng)該要么垂直對(duì)齊換行的元素(見 :ref
:`行長度 line_length
>` 部分的示例),
或者使用4空格的懸掛式縮進(jìn)(這時(shí)第一行不應(yīng)該有參數(shù)):
Yes: # 與起始變量對(duì)齊
foo = long_function_name(var_one, var_two,
var_three, var_four)
# 字典中與起始值對(duì)齊
foo = {
long_dictionary_key: value1 +
value2,
...
}
# 4 個(gè)空格縮進(jìn),第一行不需要
foo = long_function_name(
var_one, var_two, var_three,
var_four)
# 字典中 4 個(gè)空格縮進(jìn)
foo = {
long_dictionary_key:
long_dictionary_value,
...
}
No: # 第一行有空格是禁止的
foo = long_function_name(var_one, var_two,
var_three, var_four)
# 2 個(gè)空格是禁止的
foo = long_function_name(
var_one, var_two, var_three,
var_four)
# 字典中沒有處理縮進(jìn)
foo = {
long_dictionary_key:
long_dictionary_value,
...
}
空行
頂級(jí)定義之間空兩行, 方法定義之間空一行
頂級(jí)定義之間空兩行, 比如函數(shù)或者類定義. 方法定義, 類定義與第一個(gè)方法之間, 都應(yīng)該空一行.
函數(shù)或方法中, 某些地方要是你覺得合適, 就空一行.
空格
按照標(biāo)準(zhǔn)的排版規(guī)范來使用標(biāo)點(diǎn)兩邊的空格
括號(hào)內(nèi)不要有空格.
按照標(biāo)準(zhǔn)的排版規(guī)范來使用標(biāo)點(diǎn)兩邊的空格
Yes: spam(ham[1], {eggs: 2}, [])
No: spam( ham[ 1 ], { eggs: 2 }, [ ] )
不要在逗號(hào), 分號(hào), 冒號(hào)前面加空格, 但應(yīng)該在它們后面加(除了在行尾).
Yes: if x == 4:
print x, y
x, y = y, x
No: if x == 4 :
print x , y
x , y = y , x
參數(shù)列表, 索引或切片的左括號(hào)前不應(yīng)加空格.
Yes: dict['key'] = list[index]
Yes: dict['key'] = list[index]
在二元操作符兩邊都加上一個(gè)空格,
比如賦值(=), 比較(==, , >, !=, >, =, >=, in, not in, is, is not), 布爾(and, or, not).
至于算術(shù)操作符兩邊的空格該如何使用, 需要你自己好好判斷. 不
過兩側(cè)務(wù)必要保持一致.
當(dāng)'='用于指示關(guān)鍵字參數(shù)或默認(rèn)參數(shù)值時(shí), 不要在其兩側(cè)使用空格.
Yes: def complex(real, imag=0.0): return magic(r=real, i=imag)
No: def complex(real, imag = 0.0): return magic(r = real, i = imag)
不要用空格來垂直對(duì)齊多行間的標(biāo)記, 因?yàn)檫@會(huì)成為維護(hù)的負(fù)擔(dān)(適用于:, #, =等):
Yes:
foo = 1000 # 注釋
long_name = 2 # 注釋不需要對(duì)齊
dictionary = {
"foo": 1,
"long_name": 2,
}
No:
foo = 1000 # 注釋
long_name = 2 # 注釋不需要對(duì)齊
dictionary = {
"foo" : 1,
"long_name": 2,
}
以上就是基于Google的Python編碼規(guī)范標(biāo)準(zhǔn)的詳細(xì)內(nèi)容,更多關(guān)于Google的Python編碼規(guī)范的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
您可能感興趣的文章:- python編碼總結(jié)(編碼類型、格式、轉(zhuǎn)碼)
- Python編碼類型轉(zhuǎn)換方法詳解
- Python編碼爬坑指南(必看)
- python編碼最佳實(shí)踐之總結(jié)
- Python編碼時(shí)應(yīng)該注意的幾個(gè)情況
- 學(xué)習(xí)python處理python編碼問題
- python入門課程第二講之編碼規(guī)范知多少