python代码规范 自动优化工具Black

自动优化工具Black

在众多代码格式化工具中,Black算是比较新的一个,它***的特点是可配置项比较少,个人认为这对于新手来说是件好事,因为我们不必过多考虑如何设置Black,让 Black 自己做决定就好。

1).安装与使用

与pylint类似,直接pip install black即可完成该模块的安装,不过black依赖于Python 3.6+,但它仍然可以格式化Python2的代码。

在使用方面black默认读取指定python文件并对其进行代码规范格式化,然后输出到原文件。

l = [1, 
    2, 
    3, 
] 

例如,我们将上面这段代码保存为test.py,然后在控制台执行 black test.py 指令,再次打开test.py,发现其中的代码变成了这个样子:

l = [1, 2, 3] 

当然,Black的封装程度再高也是有自定义配置项的,例如使用–version查看版本、使用–help查看帮助信息、使用–diff将修改信息输出到控制台而不更改原文件,下面我们还是结合一个实例来进行演示说明。

2).实例演示说明

这里我们仍然使用pylint部分的代码进行演示。通过上面的操作我们知道,对这段代码直接使用pylint进行测试会输出很多问题提示,并给出一个评分0。现在我们首先使用black对其进行格式化,得到以下代码:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,
互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
# -*- coding:utf-8 -*- 
 
import pandas as pd 
 
data = [] 
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)#原来这个是深度引用 
     #这条代码比自己写的简介的多,也更python 
   data.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') 

可能看起来修改前后的代码差异并不十分明显,实质上black已经对代码中参数赋值 = 两端的空格、注释的格式、制表符等进行了替换和修改,我们使用pylint来进行验证,执行 pylint 模块名称 命令,得到如下结果:

在这里插入图片描述
可以看到,相对于最初的文件,评分从0分提高到7.3分,输出的问题提示少了很多,剩余的问题主要是缺少说明文档、变量命名不规范.black对于提高我们代码规范性价比也是非常高的。

如果不想black直接对原文件进行修改,而是想看看它对代码中的哪些地方进行了改动的话,可以使用–diff参数,执行black --diff 文件名称,black会将相关信息输出到控制台(下图,其中-表示源代码,+表示建议修改后的代码),而不会对原文件进行修改。
在这里插入图片描述
总之,black真的是一个非常好用的库,尤其对于新手来说,可以很方便地规范自己的代码风格。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值