python 代码格式化工具 black,类似 gofmt

文章目录

    从网上下载了一段 opencv 的 python 代码,代码风格异常粗放豪迈,不到 100 行的代码,几十处 pep8 格式警告。
    手动改起来,太累了,所以想找一个类似 golang gofmt 那样的代码格式化工具,能一键搞定搞定。

    方案一:YAPF

    Google 出品,类似 gofmt 的理念。可以定制化配置。

    https://github.com/google/yapf

    方案二:black

    但是从 github star 数来看,black 这个格式化工具更流行。YAPF 13k star,black 39k star。(2024-12-07)

    https://github.com/psf/black

    实际使用上,black 确实简洁,无需配置,人狠话不多。懒惰的我最终选择了 black。

    python 代码格式化工具 black

    安装:

    pip3 install black
    

    对一个 python 进行格式化:

    > black test_seed.py
    reformatted test_seed.py
    
    All done! ✨ 🍰 ✨
    1 file reformatted.
    

    再次 vim 打开 test_seed.py 这个文件,pep8 的错误提示果然都消失了。完美!

    与 Neovim 集成

    https://black.readthedocs.io/en/stable/integrations/editors.html#vim

    我用的 Vundle,所以加上

    Plugin 'psf/black'
    
    autocmd BufWritePre *.py Black
    

    设置在保存 python 代码时,自动执行 Black 命令。

    注意: 不要使用官方的配置

    autocmd BufWritePre *.py execute ':Black'
    

    会报错。

    有时候也得妥协

    虽然个人项目用 black 很爽,但是如果跟其他人合作开发。而另外一方不用 black 来做代码格式化。
    那么就会产生悲剧。例如一个非常大的 python 代码文件,对方小哥修改起来,git 提交时,完全不看 git diff。而其使用的编辑器/IDE 也自带代码格式化,那么悲剧就会发生。会产生几千行缩进的改动。

    我也懒得说啥, 这种事情总得有一方妥协,对于这种项目,我就把 black 的配置禁用掉了。

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式