每一种编程语言都有自己专属的格式化工具,比如golang语言的gofmt,JavaScript语言的prettier,php语言的php-cs-fixer,类似这些编程语言,python也有它有自己的自动格式化工具,但不同的是它有很多格式化工具。接下来,让我们看看这些不同的格式化工具之间的区别。autopep8是最早的python格式化代码工具。它使用pycodestyle来分析代码,然后修复不符合pep风格的代码。同时,它也会修复一些弃用的代码,规范代码的结尾,为一些方法和函数添加一些空行分隔符。autopep8支持通过配置文件格式化语句,它支持。cfg、.ini.pep8.flake8等格式的配置文件。他目前在github上有超过4200个赞。yapf是谷歌推出的格式化工具。因为有大厂背书,所以发展很快。它目前在github上有13,000个赞。他不检查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')classfoo(object):deff(self):return37*-+2defg(self,x,y=42):returnydeff(a)return37+-+a[42-x:y**3]上面乱七八糟的代码经过yapf格式化后,会变得非常规整,更易读。x={'a':37,'b':42,'c':927}y='hello''world'z='hello'+'world'a='hello{}'.format('world')classfoo(object):deff(self):return37*-+2defg(self,x,y=42):returnydeff(a):return37+-+a[42-x:y**3]blackblack是近几年新推出的python代码格式化工具。虽然它是最新的,但却是最受欢迎的。目前,它在github上有超过30000个赞。black声称是一个不折不扣的代码格式化工具。也就是说,它默认不允许也不要求你手动调整代码格式的细节。它具有非常高效的速度,并被许多项目采用。Black有一个全面的测试套件,具有高效的并行功能测试,这里有一些使用black的组织:Facebook、Dropbox、KeepTruckin、Mozilla、Quora、Duolingo、QuantumBlack、Tesla、ArcherAviation。你可以看到很多著名的公司都用它来格式化python代码,就是因为它太容易使用和方便了。综上,autopep8几乎已经被弃用,从github上的点赞数可以看出,yapf的格式化方案更加灵活,定制化程度高,而black让程序看起来更加统一优雅,可以避免复杂的配置。如果你的公司或者你正在使用python进行项目开发,那么选择一个代码格式化工具是非常有必要的,它可以为你的开发团队节省很多时间。而且无论是你个人的代码还是别人的代码,格式看起来都一样,所以大家阅读别人的代码将是一件快乐的事情。
