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

更新日期: 2024-12-07 阅读次数: 4042 字数: 461 分类: Python

从网上下载了一段 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 聊聊, 查看更多联系方式

tags: neovim