Python 语言的自动格式化工具

开发 前端
如果你公司或者你正在使用 python 进行项目的开发,那么选择一款代码格式化工具是非常必要的,它可以让你的开发团队节省大量时间。而且无论是你的个人代码还是其他人的代码格式看起来都是一样的,这样每个人阅读其他人的代码都会是一件幸福的事情。

每种编程语言都有自己专属的格式化工具,比如 golang 语言的 gofmt,JavaScript 语言的 prettier,php 语言的 php-cs-fixer,和这些编程语言类似,python 也有自己的自动化格式工具,不过不同的是,它有很多个格式化工具,接下来我们就来看看这些不同的格式化工具究竟有什么不同。

autopep8

这个是最早的 python 格式化代码工具,它采用 pycodestyle 来分析代码,然后对于不符合 pep 风格的代码进行修复。同时,它还会修复一些已经弃用的代码,并且规范代码的结尾,对于一些方法和函数添加一些空行分隔符。

autopep8 是支持通过配置文件进行格式化声明的,它支持。cfg,.ini  .pep8 .flake8 等格式的配置文件。目前他在 github 上有 4200 多个点赞。

yapf

这是一个谷歌推出的格式化工具,因为有大厂背书,所以它发展的很快,目前在 github 上有 13000 个点赞。他不会检查 pep 准则,它只会格式化代码。它采取的是类似于​​clang-format​​的思想,就是读取整个文件代码,然后格式化成最佳的格式。

它是一个可配置的代码格式方案,不同的配置会导致不同的格式化结果,目前主流的配置有 pep8,google,facebook,chromium 等。此外,它还支持自定义配置方案,通过​​--style​​即可指定格式样式。

x = {  'a':37,'b':42,

'c':927}

y = 'hello ''world'
z = 'hello '+'world'
a = 'hello {}'.format('world')
class foo ( object ):
def f (self ):
return 37*-+2
def g(self, x,y=42):
return y
def f ( a )
return 37+-+a[42-x : y**3]

上面杂乱无章的代码经过​​yapf​​格式化后,就会变得很规整,更加容易阅读。

x = {'a': 37, 'b': 42, 'c': 927}

y = 'hello ' 'world'
z = 'hello ' + 'world'
a = 'hello {}'.format('world')

class foo(object):
def f(self):
return 37 * -+2

def g(self, x, y=42):
return y

def f(a):
return 37 + -+a[42 - x:y**3]

black

black 是最近几年新推出的 python 代码格式化工具,虽然是最新推出的,然而它却是最受欢迎的,目前它在 github 上的点赞是 30000 多。

图片

black 号称毫不妥协的代码格式化工具。也就是说,它默认不许你也不需要你手动进行代码格式的细节调整。

图片

它具有非常高效的速度,并且被很多项目所采用。

图片

Black 拥有全面的测试套件,具有高效的并行功能测试,

下面是使用 black 的一些组织:Facebook,Dropbox,KeepTruckin,Mozilla,Quora, Duolingo,QuantumBlack,Tesla,Archer Aviation。

你可以看到,非常多的著名公司使用它来格式化 python 代码,只因为它太好用了,太方便了。

总结

autopep8 几乎已经被放弃了,这从 github 上的点赞数就可以看出来,yapf 具有更加灵活的,高度定制化的格式化方案,而 black 则让程序看起来更加统一和优雅,并且可以避免复杂的配置。

图片

如果你公司或者你正在使用 python 进行项目的开发,那么选择一款代码格式化工具是非常必要的,它可以让你的开发团队节省大量时间。而且无论是你的个人代码还是其他人的代码格式看起来都是一样的,这样每个人阅读其他人的代码都会是一件幸福的事情。

责任编辑:武晓燕 来源: 程序那些事儿
相关推荐

2010-08-09 09:14:37

Flex代码格式化

2010-08-10 13:28:21

Flex代码格式化

2012-05-16 09:14:11

代码美化代码工具Java

2010-08-03 10:40:29

Flex代码格式化

2018-05-25 16:23:00

Python代码工具

2022-07-20 12:18:36

Python自动化工具tox

2021-05-19 17:04:29

Python阿里自动化工具

2009-06-05 15:27:23

Eclipse工具格式化模板应用

2019-05-17 13:20:57

Black格式化工具Python

2010-09-06 15:17:14

Sql函数

2010-12-06 09:56:52

数据中心网络

2022-11-08 08:45:30

Prettier代码格式化工具

2021-05-08 09:00:53

AI 工具人工智能

2010-08-02 16:25:03

ibmdwJDT

2021-05-06 15:05:57

Python自动化工具

2010-05-26 16:21:25

2020-03-31 10:58:35

网络自动化SD-WAN软件定义网络

2009-08-03 14:25:59

C#日期格式化

2019-12-11 11:54:37

IT工具云计算

2021-06-09 07:55:18

Python格式化字符串
点赞
收藏

51CTO技术栈公众号