你写的Python代码规范吗?
總第141篇/張俊紅
1.什么是PEP8
PEP 是 Python Enhancement Proposals 的縮寫,直譯過來就是「Python增強建議書」也可叫做「Python改進建議書」,說的直白點就是Python相關的一些文檔,主要用來傳遞某些信息,這些信息包括某個通知亦或是某個新的規范。關于更深層次的概念,大家有興趣的可以自行去了解。
PEP 后面的數字從0開始一直累加,不同的數字代表不同的文檔,我們今天介紹的是 PEP8,這個文檔主要是用來規范 Python 代碼的寫法。
2.常用的標準
PEP8 里面有很多規范,作為一個業余程序員主要分享以下一些比較常用的規范。
2.1縮進
我們知道在寫 if條件、for循環、while循環、函數等語句時都是需要縮進的,正常來說縮進只要有縮進空格就行,具體縮進幾個都行,所謂的無規矩不成方圓,想象一下,你習慣縮進3個,我習慣縮進5個,彼此交換代碼的時候,那代碼看起來是有多亂。為了避免這種局面的出現,PEP8 就建議縮進統一用4個空格。
#?建議這樣 if?a?>?b:print("a?is?max")#?不建議這樣 if?a?>?b:print("a?is?max")還有盡量不要使用 Tab 鍵代替空格。
2.2最長字符
Python中一行的字符數限制為79個,但是有的時候會超過79,這個時候我們就需要進行換行,在換行的時候優先使用小括號,中括號以及大括號中的隱式續行方式,而不是使用反斜杠進行續行。比如下面的運算符遇上換行符中的例子。
當我們使用括號進行續行時,就涉及到不同行與行的對齊情況。
在多行結構中右括號可以與內容對齊單獨起一行作為最后一行的第一個字符。
my_list?=?[1,2,3,4,5,6]或者也可以與多行結構的第一行第一個字符對齊。
my_list?=?[1,2,3,4,5,6 ]2.3運算符遇上換行
有的時候多個變量名進行運算,在一行放不下時,這個時候就需要換行,那么當運算符遇上換行時我們該怎么換呢?建議在運算符的前面進行換行。
#?建議這樣 income?=?(income1?+?income2-?cost1-?cost2)#?不建議這樣 income?=?(income1?+?income2?-?cost1?-?cost2)?2.4空白行
函數和類的定義,前后用兩個空行隔開,這個就類似于我們在 word 里面編寫文檔,段前段后留空行。
在前面的舉例中,建議這樣和不建議這樣就可以當作兩個函數,這些函數之間是留兩空白行。
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])在給某個函數參數傳入參數值時,不建議使用空格。
#?建議這樣 plt.label(label="test_title")#?不建議這樣 plt.label(label?=?"test_title")2.6注釋
代碼注釋可以幫助我們很快的理清代碼,但是前提是注釋寫的夠好夠清晰,要不然不僅不會起到幫助的作用,反而會擾亂視線。關于注釋主要有如下規則:
注釋應該是完整一句話,如果一個注釋是一個短語或簡短的一句話,第一個單詞應該大寫。
如果注釋很短,結尾的句號可以省略。塊注釋一般由完整句子的一個或多個段落組成。并且每句話結束都有個句號。
行內注釋是與代碼寫在同一行的注釋,行內注釋要和代碼保留至少兩個空格分隔。注釋由#和一個空格開始。
x?=?max(a,b)??#?select?big?one2.7模塊導入
我們知道 Python 中有很多現成的模塊可以供我們使用,在使用之前我們需要對模塊進行導入,導入模塊的時候我們也需要遵循相應的規則。
同時導入多個庫的時候,建議分開不同的行進行導入。
#?建議這樣 import?pandas import?numpy#?不建議這樣 import?pandas,numpy且導入模塊的代碼總是位于代碼的最開始部分,在模塊注釋和文檔字符串之后,在模塊的全局變量與常量之前。
2.8命名規范
在 Python 里面會涉及到很多名字,模塊名、變量名、函數名、類名。這就和我們人名字一樣,都是有一定講究的。
不要以 Python 中的關鍵字作為變量名,比如 sum、def、list 等。
不要使用字母‘l’(小寫的L),‘O’(大寫的O),或者‘I’(大寫的I)作為單字符變量名。
在有些字體里,這些字符無法和數字0和1區分,如果想用‘l’,用‘L’代替。
函數名應該小寫,如果想提高可讀性可以用下劃線分隔。
3.在Jupyter_notebook使用
上面講了幾種規范,我們可以嚴格按照上面的規范去寫代碼,按照規范去做,總覺得會有種束縛,不太舒服,可是不按照規范去寫,寫出來的代碼確實不太美觀有不易讀,那可怎么辦呢?有沒有一種工具可以幫助我們把不規范的代碼直接更改成 PEP8 的規范呢?答案是有,那就是 Autopep8 模塊。
首先我們需要去安裝一下這個模塊,使用如下命令:
pip?install?Autopep8安裝好 Autopep8 模塊以后我們還需要安裝一個 jupyter_contrib_nbextensions 的插件,這個插件是 jupyter_notebook 中的一個插件,關于這個插件的安裝在我前面的文章寫過為jupyter_notebook增加目錄,Jupyter_notebook中用的都是這一個插件。
安裝好插件以后,我們來到 Nbextensions 部分,然后把 Autopep8 打勾。這個時候就可以在 Jupyter_notebook 中使用 PEP8 規范了。
那具體該怎么用呢?選中你要規范化的代碼,然后點擊菜單欄中的「小錘子」,即可完成代碼規范,就是這么簡單。
先看個空格
#?規范前 a=1+2 --- #?規范后 a?=?1+2再看個縮進
#?規范前 def?test_pep():print("this?is?test") --- #?規范后 def?test_pep():print("this?is?test")PEP8 官網:
https://www.python.org/dev/peps/pep-0008/
PEP8 中文文檔:
https://blog.csdn.net/ratsniper/article/details/78954852
總結
以上是生活随笔為你收集整理的你写的Python代码规范吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python报表自动化
- 下一篇: 莞然一笑成语解释