达观动态

达观愿与业内同行分享 助力各企业在大数据浪潮来临之际一起破浪前行

Python 工程的最佳伴侣:isort、flake8、black 和 mypy

在 Python 项目开发过程中,我们经常需要一些工具来帮助我们保持代码质量,提高开发效率。今天,我们要介绍四个 Python 工程的最佳伴侣:isort、flake8、black 和 mypy。

01 isort:让导入看起来整齐

isort 是一个 Python 工具,可以自动在 Python 文件中排序和格式化 import 语句。它可以帮助我们确保所有的 import 语句都遵循相同的标准,使得代码看起来更清晰,更易于阅读。

02 flake8:代码风格一致性

flake8 是一个 Python 代码风格检查工具。它可以帮助我们发现代码中的风格问题,例如行长度过长、不符合 PEP8 标准的命名、未使用的变量等问题。通过使用 flake8,我们可以确保代码风格的一致性,提高代码的可读性。下面让我们通过一个示例来看一下 Flake8 是如何工作的。

首先,我们需要一个有一些风格问题的 Python 代码。假设我们有以下的代码:

这段代码虽然可以正确运行,但是它不符合 PEP 8 的代码风格规定。比如,函数参数列表中的逗号后应该有一个空格,而不是前面;return 语句后的运算符两侧应该都有空格。

接下来,我们可以使用 Flake8 来检查这段代码。运行以下命令:

flake8 example.pyFlake8 会输出以下信息:

这里,E201、E202 和 E225 是 Flake8 针对不同类型问题的错误代码。你可以在 Flake8 的规则列表 中找到这些错误代码的详细解释。

有了这些错误信息,我们就可以逐一修正代码中的问题,使之符合 PEP 8 的规定:

只能告诉你,哪里的代码风格不符合规范,我们要手动改,非常难受, 下面这个工具black就可以自动帮我们格式化代码符合python规范。

03 black:自动化代码格式化

black 是一个 Python 代码自动格式化工具。你可以把它看作是一个“无需配置”的 flake8,它会自动把你的代码格式化到 PEP 8 标准。这意味着我们可以花更少的时间在代码格式化上,而将更多的精力放在解决实际的问题上。

需要注意的是, black 有一个默认的行长度限制(88个字符),这可能会和 fake8 的默认行长度限制(79个字符)冲突。如果你想一起使用这两个工具,你可能需要在 flake8 的配置文件中设置 max-line-length = 88 ,以避免不必要的冲突。或者把 black 改成79个字符。如在python项目中的 pyproject.tom1 中进行统一配置:

04 mypy:静态类型检查

mypy 是一个 Python 静态类型检查工具。虽然 Python 是一门动态类型的语言,但在某些情况下,使用静态类型可以帮助我们发现潜在的问题。mypy 可以检查我们的代码,确保我们的类型注解是正确的。

$ mypy my_script.pymy_script.py: note: In function “greeting”:my_script.py:2: error: Argument 1 to “greeting” has incompatible type “int”; expected “str”在 Python 项目开发过程中,isort、flake8、black 和 mypy 是我们的最佳伴侣。它们可以帮助我们维护代码质量,提高开发效率。本文仅仅告诉你他们最基本的使用, 在生产的时候,我们可以把他们安装到我们的IDE,如pycharm,vscode。也可以结合到CICD的流程,让大家的代码风格规范都统一起来。