如何自动格式化Python代码?

121 投票
7 回答
161149 浏览
提问于 2025-04-15 21:31

我有一些现有的代码,格式不太一致——有时候用两个空格来缩进,有时候用四个空格,等等。代码本身是正确的,也经过了充分测试,但格式实在糟糕。

有没有什么地方可以在线让我直接粘贴一段Python代码,然后自动帮我调整缩进和格式?或者,有没有一个X工具,我可以像这样使用X --input=*.py,让它把每个文件都替换成格式化后的版本?

7 个回答

23

使用black这个工具。它只有一个设置选项(行长度),这样可以确保在很多项目中保持一致性。它会强制遵循PEP8规范。

116

autopep8

autopep8 是一个可以自动格式化你 Python 脚本的工具。它不仅会调整代码的缩进,还会处理其他的代码间距风格。使用它可以让你的 Python 脚本符合 PEP8 风格指南。

pip install autopep8
autopep8 your_script.py    # dry-run, only print
autopep8 -i your_script.py # replace content

更新:

很多编辑器都有 PEP8 插件,可以在你保存文件后自动重新格式化你的代码。在 emacs 中使用 py-autopep8

yapf

yapf 是一个更新更好的 Python 代码格式化工具。它不仅仅是为了遵循规范,而是力求达到最佳的格式效果。使用方法和 autopep8 很相似。

pip install yapf
yapf your_script.py    # dry-run, only print
yapf -i your_script.py # replace content

想了解更多信息,比如格式化配置,请查看 README.rst 文件,地址在 yapf 的 GitHub 上。


更新 2:

Black

Blackyapf 更好。它更智能,能够处理大多数复杂的格式化情况。

58

补充说明:现在我推荐使用 autopep8,因为它不仅能修正缩进问题,还可以根据你的需要,让代码符合很多其他的PEP8规范。


可以使用 reindent.py。这个工具应该会和Python的标准安装包一起提供,不过在Ubuntu上,你需要安装 python2.6-examples 这个包。

你也可以在 这个网站上找到它。

这个脚本的目的是把任何Python脚本转换成符合4个空格缩进标准的格式。

撰写回答