代码规范处理
20211112
用英文字母可以表示確定的意思
而拼音不行所以英文首選
20210913
- 先是 ctrl+alt+l
- black 修改
- pylint 修改 重點是 R 和 E,F的錯誤,其他錯誤酌情修改
pylint MESSAGE_TYPE 有如下幾種:
? 慣例。違反了編碼風格標準
? 重構。寫得非常糟糕的代碼。
(W) 警告。某些 Python 特定的問題。
(E) 錯誤。很可能是代碼中的錯誤。
(F) 致命錯誤。阻止 Pylint 進一步運行的錯誤。
pylint 更多使用說明:https://www.jb51.net/article/137810.htm
Python學了好久,但是拿出來review的代碼好像總是長的不夠俊美,不夠工整!因此標準化的代碼規(guī)范就顯得尤為重要。今天就來推薦3個利器,python界廣泛認同的代碼風格規(guī)范PEP8和兩個超牛的工具pylint和black,分別用于代碼風格規(guī)范檢測和自動優(yōu)化。
1代碼風格規(guī)范PEP8
首先講一講為什么要使用PEP8,我們先來看下面這段代碼,在相關函數定義后,它是可以正常編譯執(zhí)行的,但是這段代碼的怪異風格無論是讓別人閱讀還是自己閱讀都會感到很難受。這就需要一種普遍認同的代碼風格規(guī)范,對行長度、縮進、多行表達式、變量命名約定等內容進行統(tǒng)一,這就是PEP8的意義所在。
需要說明的是,PEP 8中有一些規(guī)范是為了方便閱讀,而有一些規(guī)范實實在在地影響著代碼的性能、容錯率或者重構難度。
比如上面這段代碼,foo函數僅在滿足條件的情況下有返回值、bar函數僅在不滿足條件的情況下有返回值,這樣的代碼兼容性會比較差,正確的做法是保持代碼一致性,函數中的返回語句都應該返回一個表達式,或者都不返回:
關于PEP8就簡單介紹到這里,有興趣的朋友可以自行查閱文檔。當我們打開文檔的時候會發(fā)現(xiàn)PEPE 8規(guī)范的內容非常多、非常細。
作為一名新手如果要一條條解讀、一條條記住這些規(guī)定實在不是件容易的事情。然而養(yǎng)成良好的代碼編寫習慣對新手來說又是十分重要的。
下面我們就正式進入主題,介紹兩個簡單又實用的代碼自動化檢測和優(yōu)化工具,可以幫助我們快速規(guī)范自己的代碼風格。
2自動檢測工具Pylint
Pylint 是一個檢查違反 PEP8 規(guī)范和常見錯誤的庫,它會自動查找不符合代碼風格標準和有潛在問題的代碼,并在控制臺輸出代碼中違反規(guī)范和出現(xiàn)問題的相關信息。
1.安裝與使用
與python的其他庫一樣,直接 pip install pylint 即可完成安裝,另外anaconda自帶pylint,所以如果安裝過anaconda不必再單獨安裝此庫。
pylint的使用也非常簡單,最基本的用法直接在控制臺輸入 pylint 路徑/模塊名 即可對相關模塊的代碼風格規(guī)范 進行檢查,檢查結果會在控制臺輸出。
建議結合 pylint --help 的提示進行學習和檢索。介紹完pylint的基本情況,我們來結合一個實例進行詳細說明。
2).實例演示說明
這里我找了自己剛學python時寫的一段代碼進行測試:
import pandas as pddata = []
char_replace_dict = {':':' ', '(':'(', ')':')', ',':','}with open('xmq_survey.txt', 'r', encoding = 'utf-8') as file:for line in file.readlines():for key, value in char_replace_dict.items():line = line.replace(key, value)#原來這個是深度引用#這條代碼比自己寫的簡介的多,也更pythondata.append(line)with open('survey.txt', 'w', encoding = 'utf-8') as file:for line in data:file.write(line)raw_data = pd.read_table('survey.txt', delimiter = ' ', header = None) #查看read_table函數的用法
raw_data.columns = ['Name', 'Raw Info']
raw_data.count()
print('successful')
乍一看好像沒什么大問題,但是經過pylint檢查后卻給出了一堆問題提示(下圖),我們來看檢查結果,每行以大寫字母+冒號開頭的信息都是一處反饋提示。
其中開頭的大寫字母表示錯誤類型(主要有CRWEF幾類);以逗號間隔的兩個數字表示發(fā)現(xiàn)問題的位置(行和列);其后是對問題的具體描述,括號里的內容稱為message id,可以簡單理解為錯誤類型的詳細分類,通過
pylint --help-msg= 指令可以查看這個問題的的詳細信息 。
C——違反代碼風格標準;
R——代碼結構較差;
W——關于細節(jié)的警告;
E——代碼中存在錯誤;
F——導致Pylint無法繼續(xù)運行的錯誤。
例如,我們執(zhí)行 pylint --help-msg=trailing-newlines 指令,會在控制臺輸出對 trailing-newlines 這種問題的詳細描述:
pylint輸出的最后一行是其對本次檢測的評分,滿分為10分,可以看到我的代碼本次評分為0分T_T。
既然知道了自己的代碼哪里不規(guī)范,就去針對性地改正吧,根據提示結果首先將函數參數賦值 = 兩邊的空格去掉,再將多余的空行去掉,然后運行一下pylint再次進行檢測,得到如下結果:
可以看到,剛才修改過的代碼相關問題提示已經沒有了,評分也從0分提高到了3.33分。但是仍然有很多問題,這里就要注意了,PEP8并不是要百分百遵守的,當遵循PEP 8規(guī)范會使代碼可讀性變差、會跟周圍代碼風格不一致的時候,還是要遵循自己的判斷。
這種情況下,pylint也提供了一種操作,可以手動屏蔽某些問題提示,以剛才的代碼為例,剩下的幾個問題主要是因為使用了Tab鍵、變量命名不規(guī)范、缺少文檔說明造成的,我們可以使用
pylint --disable=mixex-indentation,invalid-name,missing-docstring 模塊名稱 命令對相關規(guī)范進行屏蔽重新檢測,發(fā)現(xiàn)問題提示全部消除,評分也提升到了10分。
一段20行的代碼就檢測到如此之多的問題提示,雖然手動修改代碼有助于對PEP 8規(guī)范的學習,但當項目文件比較多、腳本代碼很長的時候,實在是一個不小的工作量,因此就出現(xiàn)了能夠自動優(yōu)化代碼風格的工具。
總結
- 上一篇: pycharm配置远程调试docker
- 下一篇: PyCharm_10个加速省时间技巧