每种编程语言都有自己专属的格式化工具,比如 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
即可指定格式样式。
上面杂乱无章的代码经过yapf
格式化后,就会变得很规整,更加容易阅读。
black
black 是最近几年新推出的 python 代码格式化工具,虽然是最新推出的,然而它却是最受欢迎的,目前它在 github 上的点赞是 30000 多。
black 号称毫不妥协的代码格式化工具。也就是说,它默认不许你也不需要你手动进行代码格式的细节调整。
它具有非常高效的速度,并且被很多项目所采用。
Black 拥有全面的测试套件,具有高效的并行功能测试,
下面是使用 black 的一些组织:Facebook,Dropbox,KeepTruckin,Mozilla,Quora, Duolingo,QuantumBlack,Tesla,Archer Aviation。
你可以看到,非常多的著名公司使用它来格式化 python 代码,只因为它太好用了,太方便了。
总结
autopep8 几乎已经被放弃了,这从 github 上的点赞数就可以看出来,yapf 具有更加灵活的,高度定制化的格式化方案,而 black 则让程序看起来更加统一和优雅,并且可以避免复杂的配置。
如果你公司或者你正在使用 python 进行项目的开发,那么选择一款代码格式化工具是非常必要的,它可以让你的开发团队节省大量时间。而且无论是你的个人代码还是其他人的代码格式看起来都是一样的,这样每个人阅读其他人的代码都会是一件幸福的事情。