你寫的Python代碼規(guī)范嗎?
回復(fù)“書籍”即可獲贈Python從入門到進(jìn)階共10本電子書

總第141篇/張俊紅
1.什么是PEP8
PEP 是 Python Enhancement Proposals 的縮寫,直譯過來就是「Python增強建議書」也可叫做「Python改進(jìn)建議書」,說的直白點就是Python相關(guān)的一些文檔,主要用來傳遞某些信息,這些信息包括某個通知亦或是某個新的規(guī)范。關(guān)于更深層次的概念,大家有興趣的可以自行去了解。
PEP 后面的數(shù)字從0開始一直累加,不同的數(shù)字代表不同的文檔,我們今天介紹的是 PEP8,這個文檔主要是用來規(guī)范 Python 代碼的寫法。

2.常用的標(biāo)準(zhǔn)
PEP8 里面有很多規(guī)范,作為一個業(yè)余程序員主要分享以下一些比較常用的規(guī)范。
2.1縮進(jìn)
我們知道在寫 if條件、for循環(huán)、while循環(huán)、函數(shù)等語句時都是需要縮進(jìn)的,正常來說縮進(jìn)只要有縮進(jìn)空格就行,具體縮進(jìn)幾個都行,所謂的無規(guī)矩不成方圓,想象一下,你習(xí)慣縮進(jìn)3個,我習(xí)慣縮進(jìn)5個,彼此交換代碼的時候,那代碼看起來是有多亂。為了避免這種局面的出現(xiàn),PEP8 就建議縮進(jìn)統(tǒng)一用4個空格。
# 建議這樣
if a > b:
print("a is max")
# 不建議這樣
if a > b:
print("a is max")
還有盡量不要使用 Tab 鍵代替空格。
2.2最長字符
Python中一行的字符數(shù)限制為79個,但是有的時候會超過79,這個時候我們就需要進(jìn)行換行,在換行的時候優(yōu)先使用小括號,中括號以及大括號中的隱式續(xù)行方式,而不是使用反斜杠進(jìn)行續(xù)行。比如下面的運算符遇上換行符中的例子。
當(dāng)我們使用括號進(jìn)行續(xù)行時,就涉及到不同行與行的對齊情況。
在多行結(jié)構(gòu)中右括號可以與內(nèi)容對齊單獨起一行作為最后一行的第一個字符。
my_list = [
1,2,3,
4,5,6
]
或者也可以與多行結(jié)構(gòu)的第一行第一個字符對齊。
my_list = [
1,2,3,
4,5,6
]
2.3運算符遇上換行
有的時候多個變量名進(jìn)行運算,在一行放不下時,這個時候就需要換行,那么當(dāng)運算符遇上換行時我們該怎么換呢?建議在運算符的前面進(jìn)行換行。
# 建議這樣
income = (income1
+ income2
- cost1
- cost2)
# 不建議這樣
income = (income1 +
income2 -
cost1 -
cost2)
2.4空白行
函數(shù)和類的定義,前后用兩個空行隔開,這個就類似于我們在 word 里面編寫文檔,段前段后留空行。
在前面的舉例中,建議這樣和不建議這樣就可以當(dāng)作兩個函數(shù),這些函數(shù)之間是留兩空白行。
2.5空格
合適的空格會增加可閱讀性,比如英文和中文之間要留有一個空格,這樣看起來會相對比較舒服。在 Python 代碼中亦是如此。但是空格不可濫用。
建議在二元運算符兩邊加一個空格:如賦值(=),增量賦值(+=,-=),比較(==,<,>,!=,<>,<=,>=,in,not,in,is,is not),布爾(and, or, not)。
# 建議這樣
a = 1
a = 1+2
a > b
# 不建議這樣
a=1
a=1+2
a>b
但是不建議在小括號,中括號或者大括號之后;逗號、分號或者冒號之前添加空格。
# 建議這樣
np.array([1,2,3])
# 不建議這樣
np.array( [1,2,3] )
np.array([1 ,2 ,3])
在給某個函數(shù)參數(shù)傳入?yún)?shù)值時,不建議使用空格。
# 建議這樣
plt.label(label="test_title")
# 不建議這樣
plt.label(label = "test_title")
2.6注釋
代碼注釋可以幫助我們很快的理清代碼,但是前提是注釋寫的夠好夠清晰,要不然不僅不會起到幫助的作用,反而會擾亂視線。關(guān)于注釋主要有如下規(guī)則:
注釋應(yīng)該是完整一句話,如果一個注釋是一個短語或簡短的一句話,第一個單詞應(yīng)該大寫。
如果注釋很短,結(jié)尾的句號可以省略。塊注釋一般由完整句子的一個或多個段落組成。并且每句話結(jié)束都有個句號。
行內(nèi)注釋是與代碼寫在同一行的注釋,行內(nèi)注釋要和代碼保留至少兩個空格分隔。注釋由#和一個空格開始。
x = max(a,b) # select big one
2.7模塊導(dǎo)入
我們知道 Python 中有很多現(xiàn)成的模塊可以供我們使用,在使用之前我們需要對模塊進(jìn)行導(dǎo)入,導(dǎo)入模塊的時候我們也需要遵循相應(yīng)的規(guī)則。
同時導(dǎo)入多個庫的時候,建議分開不同的行進(jìn)行導(dǎo)入。
# 建議這樣
import pandas
import numpy
# 不建議這樣
import pandas,numpy
且導(dǎo)入模塊的代碼總是位于代碼的最開始部分,在模塊注釋和文檔字符串之后,在模塊的全局變量與常量之前。
2.8命名規(guī)范
在 Python 里面會涉及到很多名字,模塊名、變量名、函數(shù)名、類名。這就和我們?nèi)嗣忠粯樱际怯幸欢ㄖv究的。
不要以 Python 中的關(guān)鍵字作為變量名,比如 sum、def、list 等。
不要使用字母‘l’(小寫的L),‘O’(大寫的O),或者‘I’(大寫的I)作為單字符變量名。
在有些字體里,這些字符無法和數(shù)字0和1區(qū)分,如果想用‘l’,用‘L’代替。
函數(shù)名應(yīng)該小寫,如果想提高可讀性可以用下劃線分隔。
3.在Jupyter_notebook使用
上面講了幾種規(guī)范,我們可以嚴(yán)格按照上面的規(guī)范去寫代碼,按照規(guī)范去做,總覺得會有種束縛,不太舒服,可是不按照規(guī)范去寫,寫出來的代碼確實不太美觀有不易讀,那可怎么辦呢?有沒有一種工具可以幫助我們把不規(guī)范的代碼直接更改成 PEP8 的規(guī)范呢?答案是有,那就是 Autopep8 模塊。
首先我們需要去安裝一下這個模塊,使用如下命令:
pip install Autopep8
安裝好 Autopep8 模塊以后我們還需要安裝一個 jupyter_contrib_nbextensions 的插件,這個插件是 jupyter_notebook 中的一個插件,關(guān)于這個插件的安裝在我前面的文章寫過為jupyter_notebook增加目錄,Jupyter_notebook中用的都是這一個插件。
安裝好插件以后,我們來到 Nbextensions 部分,然后把 Autopep8 打勾。這個時候就可以在 Jupyter_notebook 中使用 PEP8 規(guī)范了。

那具體該怎么用呢?選中你要規(guī)范化的代碼,然后點擊菜單欄中的「小錘子」,即可完成代碼規(guī)范,就是這么簡單。

先看個空格
# 規(guī)范前
a=1+2
---
# 規(guī)范后
a = 1+2
再看個縮進(jìn)
# 規(guī)范前
def test_pep():
print("this is test")
---
# 規(guī)范后
def test_pep():
print("this is test")
PEP8 官網(wǎng):
https://www.python.org/dev/peps/pep-0008/
PEP8 中文文檔:
https://blog.csdn.net/ratsniper/article/details/78954852
想要學(xué)習(xí)更多網(wǎng)絡(luò)爬蟲知識,請點擊閱讀原文前往爬蟲網(wǎng)站。
------------------- End -------------------
往期精彩文章推薦:

歡迎大家點贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持
想加入Python學(xué)習(xí)群請在后臺回復(fù)【入群】
萬水千山總是情,點個【在看】行不行
/今日留言主題/
隨便說一兩句吧~
