在人與人溝通之間,最怕雞同鴨講,彼此不對頻的狀況常會造成誤會。在程式語言中也會出現類似的情況,所以就有一些約定來彼此約束。
PEP 8 是 Python 社群廣泛遵循的一種風格指南,用於提高 Python 程式碼的可讀性和一致性。一開始是 Python 之父 Guido van Rossum 自己的撰碼風格,慢慢後來演變至今。
使用一致的風格,可以讓人更容易讀取你的程式碼也易維護,也能讓專案的協作進行的更加順利。
檔案編碼: 使用 UTF-8 作為檔案編碼。
# Good
def example_function():
pass
# Bad
def example_function():
pass
在運算符周圍放置一個空格,但不要在括號內做這樣的事情。
# Good
result = x + y
# Bad
result = x+y
在以下情況下避免使用多餘的空格:
# Good
spam(ham[1], {eggs: 2})
# bad
spam( ham[ 1 ], { eggs: 2 } )
緊接在逗號、分號或冒號之前:
# Good
if x == 4: print(x, y); x, y = y, x
# bad
if x == 4 : print(x , y) ; x , y = y , x
如果使用具有不同優先權的運算符,請考慮在優先權最低的運算子周圍新增空格:
# Good
i = i + 1
submitted += 1
x = x*2 - 1
hypot2 = x*x + y*y
c = (a+b) * (a-b)
# bad
i=i+1
submitted +=1
x = x * 2 - 1
hypot2 = x * x + y * y
c = (a + b) * (a - b)
\
進行行連接。long_line = "This is a very long line that exceeds the recommended length " \
"of 79 characters. Using a backslash allows us to break it " \
"into multiple lines for better readability."
在括號內進行換行:
result = some_function_that_takes_arguments(
'argument1', 'argument2', 'argument3',
'argument4', 'argument5', 'argument6'
)
在字典(花括號內)進行換行:
my_dict = {
'key1': 'value1',
'key2': 'value2',
'key3': 'value3',
}
在列表(方括號內)進行換行:
my_list = [
'item1', 'item2', 'item3',
'item4', 'item5', 'item6',
]
# Good
income = (gross_wages
+ taxable_interest
+ (dividends - qualified_dividends)
- ira_deduction
- student_loan_interest)
# bad
income = (gross_wages +
taxable_interest +
(dividends - qualified_dividends) -
ira_deduction -
student_loan_interest)
# Good
def function1():
pass
def function2():
pass
class ExampleClass:
def __init__(self):
pass
# Bad
def function1():
pass
def function2():
pass
class ExampleClass:
def __init__(self):
pass
import *
。# Good
import module1
import module2
# Bad
from module1 import *
#推薦使用絕對導入
import mypkg.sibling
from mypkg import sibling
from mypkg.sibling import example
_
分隔(snake_case)。“l”
(小寫字母 el)、“O”
(大寫字母 oh)或“I
”(大寫字母 eye)作為單字元變數名稱。在某些字體中,這些字元與數字 1 和 0 無法區分。想要使用“l”時,請改用“L”
# Good
def example_function():
pass
class ExampleClass:
pass
# Bad
def ExampleFunction():
pass
class example_class:
pass
與None的比較,用is, not is。不要用 == 與!=。
# Good:
variable = None
if variable is None:
print("變數是 None")
else:
print("變數不是 None")
# Bad:
if variable == None:
print("變數是 None")
else:
print("變數不是 None")
另外 is not順序也很重要。雖然這兩個表達式在功能上相同,但前者更具可讀性
# Good:
if foo is not None:
# Bad:
if not foo is None:
使用 if not seq
或 if seq
更加 Pythonic,更符合慣例,並提高了代碼的可讀性。避免不必要的函數調用,使代碼更簡潔。
# Good
if not seq:
if seq:
# Bad
if len(seq):
if not len(seq):