首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python 语言的自动格式化工具

python 语言的自动格式化工具

作者头像
程序那些事儿
发布2023-03-07 11:05:54
发布2023-03-07 11:05:54
1.6K00
代码可运行
举报
文章被收录于专栏:程序那些事儿程序那些事儿
运行总次数:0
代码可运行

每种编程语言都有自己专属的格式化工具,比如 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即可指定格式样式。

代码语言:javascript
代码运行次数:0
运行
复制
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格式化后,就会变得很规整,更加容易阅读。

代码语言:javascript
代码运行次数:0
运行
复制
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 进行项目的开发,那么选择一款代码格式化工具是非常必要的,它可以让你的开发团队节省大量时间。而且无论是你的个人代码还是其他人的代码格式看起来都是一样的,这样每个人阅读其他人的代码都会是一件幸福的事情。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-01-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序那些事儿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • autopep8
  • yapf
  • black
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档