从网上下载了一段 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)
实际使用上,black 确实简洁,无需配置,人狠话不多。懒惰的我最终选择了 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 聊聊, 查看更多联系方式