python代碼規范 自動優化工具Black


自動優化工具Black

在眾多代碼格式化工具中,Black算是比較新的一個,它***的特點是可配置項比較少,個人認為這對於新手來說是件好事,因為我們不必過多考慮如何設置Black,讓 Black 自己做決定就好。

1).安裝與使用

與pylint類似,直接pip install black即可完成該模塊的安裝,不過black依賴於Python 3.6+,但它仍然可以格式化Python2的代碼。

在使用方面black默認讀取指定python文件並對其進行代碼規范格式化,然后輸出到原文件。

  1. l = [1, 
  2.     2, 
  3.     3, 

例如,我們將上面這段代碼保存為test.py,然后在控制台執行 black test.py 指令,再次打開test.py,發現其中的代碼變成了這個樣子:

  1. l = [1, 2, 3] 

當然,Black的封裝程度再高也是有自定義配置項的,例如使用--version查看版本、使用--help查看幫助信息、使用--diff將修改信息輸出到控制台而不更改原文件,下面我們還是結合一個實例來進行演示說明。

2).實例演示說明

這里我們仍然使用pylint部分的代碼進行演示。通過上面的操作我們知道,對這段代碼直接使用pylint進行測試會輸出很多問題提示,並給出一個評分0。現在我們首先使用black對其進行格式化,得到以下代碼:

  1. # -*- coding:utf-8 -*- 
  2.  
  3. import pandas as pd 
  4.  
  5. data = [] 
  6. char_replace_dict = {':':'  ', '(':'(', ')':')', ',':','} 
  7.  
  8. with open('xmq_survey.txt', 'r', encoding = 'utf-8') as file: 
  9.  for line in file.readlines(): 
  10.    for key, value in char_replace_dict.items(): 
  11.      line = line.replace(key, value)#原來這個是深度引用 
  12.      #這條代碼比自己寫的簡介的多,也更python 
  13.    data.append(line) 
  14.  
  15. with open('survey.txt', 'w', encoding = 'utf-8') as file: 
  16.  for line in data: 
  17.    file.write(line) 
  18.  
  19. raw_data = pd.read_table('survey.txt', delimiter = '    ', header = None) #查看read_table函數的用法 
  20. raw_data.columns = ['Name', 'Raw Info'] 
  21. raw_data.count() 
  22. print('successful') 

可能看起來修改前后的代碼差異並不十分明顯,實質上black已經對代碼中參數賦值 = 兩端的空格、注釋的格式、制表符等進行了替換和修改,我們使用pylint來進行驗證,執行 pylint 模塊名稱 命令,得到如下結果:

 

可以看到,相對於最初的文件,評分從0分提高到7.3分,輸出的問題提示少了很多,剩余的問題主要是缺少說明文檔、變量命名不規范.black對於提高我們代碼規范性價比也是非常高的。

如果不想black直接對原文件進行修改,而是想看看它對代碼中的哪些地方進行了改動的話,可以使用--diff參數,執行black --diff 文件名稱,black會將相關信息輸出到控制台(下圖,其中-表示源代碼,+表示建議修改后的代碼),而不會對原文件進行修改。

 

總之,black真的是一個非常好用的庫,尤其對於新手來說,可以很方便地規范自己的代碼風格。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM