如果你写的代码被其他开发者审查或贡献,那么你有可能已经遵守了写代码的风格指南。在这篇文章中,我们看一下Python中最流行的代码格式化,并帮助你决定应该采用哪一种。
为什么在Python中使用代码格式化器?
遵循风格指南可以保持代码的美观,提高可读性,使贡献和代码审查更容易。自动的Python代码格式化器可以确保你的代码库保持一致的风格,而不需要你的任何手工工作。如果坚持特定的编码风格对你来说很重要,采用自动化的方式来完成这项工作是显而易见的事情。这就避免了在代码审查过程中的吹毛求疵,为你节省了大量的时间。
黑人
受其他生态系统的工具启发,如Go的gofmt和JavaScript的Prettier,Black已经逐渐成为Python项目的事实上的代码格式化工具。它吹嘘自己是不妥协的、有主见的、快速的和决定性的--这推动了它在那些不想考虑风格但又想遵循一致的风格指南的开发者中的使用。
Black被一些非常受欢迎的开源项目所使用,如pytest、tox、Pyramid、Django Channels、Poetry等等。
如何使用Black?
从PyPI安装最新版本的Black。
然后,在一个或多个文件上运行Black。在这样做的时候,Black会将文件就地格式化。
black {source_file_or_directory}
语法
PEP 8,Python的官方风格指南,推荐使用以下规则来编写导入语句。
-
导入语句总是放在文件的顶部,就在任何模块注释和文档说明之后,在模块全局和常量之前。
-
导入应该按照以下顺序分组:
- 标准库导入。
- 相关的第三方导入。
- 本地应用程序/库的特定导入。
-
你应该在每组导入之间放一个空行。
isort 会自动对你的 Python 文件中的导入进行排序--按字母顺序,按章节和类型分开。它确保 Python 文件中的导入遵循推荐的 PEP 8 准则。
如何使用 isort?
从PyPI安装最新版本的isort。
然后,在一个或多个文件上运行isort。在这样做的时候,isort会将文件就地格式化。
autopep8
autopep8是一个非官方的,但很流行的工具,它可以自动格式化Python代码以符合PEP 8。 它使用pycodestyle,Python的官方PEP 8违规检查工具,来确定代码的哪些部分需要被格式化。
如何使用autopep8?
从PyPI安装最新版本的autopep8。
然后,在一个或多个文件上运行autopep8。在这样做的时候,autopep8会就地格式化这些文件。
autopep8 --in-place
YAPF
YAPF,即Yet Another Python Formatter,在格式化代码方面采取了与这里列出的其他工具不同的方法。它工作的前提是,符合PEP 8准则的代码可能不会被重新格式化,但这并不意味着代码看起来很好。因此,它的算法将代码重新格式化为符合风格指南的最佳格式,即使原始代码没有违反风格指南。这个想法类似于clang-format或gofmt等工具。
如何使用YAPF?
从PyPI安装最新版本的YAPF。
然后,在一个或多个文件上运行YAPF。在这样做的时候,YAPF会将文件就地格式化。
如何在 DeepSource 中使用 Python 代码格式化器?
如果你使用DeepSource进行静态分析和自动代码审查,你可以使用 Transformers 来自动运行.deepsource.toml 文件中的一个或多个代码格式器。比如说。
[[transformers]]
name = "black"
enabled = true
变形器的完整列表可在文档中找到。