首页 > 编程语言 >python代码规范 自动优化工具Black

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

时间:2023-06-01 12:32:28浏览次数:42  
标签:python 代码 pylint -- black Black data

自动优化工具Black

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

1).安装与使用

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

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

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

例如,我们将上面这段代码保存为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. 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 模块名称 命令,得到如下结果:

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

 

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

如果不想black直接对原文件进行修改,而是想看看它对代码中的哪些地方进行了改动的话,可以使用--diff参数,执行black --diff 文件名称,black会将相关信息输出到控制台(下图,其中-表示源代码,+表示建议修改后的代码),而不会对原文件进行修改。

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

 

总之,black真的是一个非常好用的库,尤其对于新手来说,可以很方便地规范自己的代码风格。 

标签:python,代码,pylint,--,black,Black,data
From: https://blog.51cto.com/u_11908275/6393239

相关文章

  • python--PythonMagick安装过程
    一、发现问题使用:pipinstallpythonmagick安装出错:1.打开网站下载自己python版本对应的pythonmagick版本其中的cp310,cp39之类就是对应Python的版本,不知道的也可以使用pipdebug--verbose查看2.打开CMD窗口,进入到pythonmagick的安装目录3.使用import命令将jpg、png图......
  • Swift UI @Binding 代码实现
    importSwiftUIfinalclassBox<T>:ObservableObject{//这个注解不加,那就玩死了也不会更新视图@Publishedvarval:Tinit(val:T){self.val=val}}structStarRating:View{//个人理解类似Java的Spring容器管理,用更大......
  • python之struct模块处理二进制
    嵌入式开发中,有时需要对二进制流文件进行读写操作,一种方法是将二进制流文件转换为c语言数组形式。这样可以使用python的struct模块,python的struct模块可以方便的进行字节与二进制之间的相互转换。1struct模块常用的几个函数函数说明struct.pack(format,v1,v2,...)......
  • python selenium框架解决ip代理框不能自动化登录,解决pyautogui开不了多线程问题
    有时候我们使用python自动化框架的时候,打开一个网页的时候,它会出现出线这一种登录框,我们f12检查不了,用开发者工具强制检查里面没有任何属性.那这时候我们就可以用到python第三方库:pyautoguiPyAutoGUI:是一个Python库,可用于自动化GUI(图形用户界面)程序的任务。它可以让Pytho......
  • Python批量填补遥感影像的无效值NoData
      本文介绍基于Python中ArcPy模块,对大量栅格遥感影像文件批量进行无效值(NoData值)填充的方法。  在处理栅格图像文件时,我们经常会遇到图像中存在有无效值(即NoData值)的情况。如下图所示,这里有一个矢量面要素图层和该矢量图层范围对应的一景栅格图像;可以看到,由于该栅格图像存在......
  • python目录扫描工具——dirsearch使用,可以使用御剑的字典 支持慢速扫描,一般使用-s 60
    使用御剑的字典:pythondirsearch.py-uxxx.com-e*-w/media/dir_dict/ASP.txt,/media/dir_dict/ASPX.txt,/media/dir_dict/DIR.txt,/media/dir_dict/JSP.txt,/media/dir_dict/MDB.txt,/media/dir_dict/PHP.txt 非常好用!!!如下是御剑的字典文件。 进入dirsearch目录,进行扫描在这......
  • json.dumps(),json.loads(),json.dump(),json.load()方法的区别(python)
    1.json.dumps()json.dump()是将字典类型转化成字符串类型。importjsondic={'a':'1111','b':'2222','c':'3333','d':'4444'}st=json.dumps(dic)print("我是字典类型的",dic)print("我是字......
  • golang实现设计模式之构建者模式总结-代码、优缺点、适用场景
    构建者模式也是一种创建型的设计模式,该模式将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的对象。大白话就是,构建者模式,从输出角度看依然是创建个对象实例,但是构建者模式更关注创建的细节,或者说一个对象的创建可以拆分为多个步骤,所有的步骤完成才创建出这个对......
  • 规则引擎的低代码日记——自定义函数编程操作(类excel函数)
    它是技术源码可开放的JAVA规则引擎,采用springcloud+VUE的技术架构进行构建,其中对数据的灵活加工处理采用的是函数式编程的思路(类excel函数配置),是其亮点功能。它允许开发人员定义和管理应用程序的规则,并在应用程序中执行这些规则。在规则引擎中,从数据加工成变量并使用函数式编程......
  • Flask-----轻量级的框架,快速的搭建程序(python)
     Flask是一个基于Python开发并且依赖jinja2模板和WerkzeugWSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借......