Python 工具链让你写的代码更规范
Python中文社区
共 6942字,需浏览 14分钟
·
2021-03-28 15:14
black
def very_important_function(template: str, *variables, file: os.PathLike, engine: str, header: bool = True, debug: bool = False):
"""Applies `variables` to the `template` and writes to `file`."""
with open(file, 'w') as f:
...
very_important_function
已经加上了类型注解,因此在现有的部分参数所占宽度的基础上又扩展了一些,所以如果我们显示器的宽度不够时,就需要横向拖动才能查看参数信息;而最好的办法就是采取竖向的方式进行排列,便于我们能自上而下的一览无遗。所以使用 black 之后上述代码将会是这样:def very_important_function(
template: str,
*variables,
file: os.PathLike,
engine: str,
header: bool = True,
debug: bool = False,
):
"""Applies `variables` to the `template` and writes to `file`."""
with open(file, "w") as f:
...
pip install black
安装到你的 Python 环境中,然后在代码中运行:black <项目文件夹 / 源码文件夹 / .py 文件等>
isort
import
的库或模块。from my_lib import Object
import os
from my_lib import Object3
from my_lib import Object2
import sys
from third_party import lib15, lib1, lib2, lib3, lib4, lib5, lib6, lib7, lib8, lib9, lib10, lib11, lib12, lib13, lib14
import sys
from __future__ import absolute_import
from third_party import lib3
print("Hey")
print("yo")
from __future__ import absolute_import
import os
import sys
from third_party import (lib1, lib2, lib3, lib4, lib5, lib6, lib7, lib8,
lib9, lib10, lib11, lib12, lib13, lib14, lib15)
from my_lib import Object, Object2, Object3
print("Hey")
print("yo")
.py
文件下中 import
部分的代码进行规整,同时它会按照内置库(及字母顺序)、第三方库以及本地自有模块的次序对我们所导入的部分进行排列。这样我们的代码不仅看起来清爽了许多,同时也能准确定位到我们已经导入的部分有哪些。isort <项目文件夹 / 源码文件夹 / .py 文件等>
静态检查工具
pylint:PyQCA 团队维护,提供了高度的可配置项(这当然也是缺点),如果你有在 VS Code 编写过 Python 代码,那么有可能就会碰到让你安装 pylint 的情况; flake8:仍是由 PyQCA 团队维护,它在功能上和 pylint 存在重叠的地方,但它也集成了 PEP8、McCabe 以及第三方插件等多个部分,功能上比 pylint 相对丰富一些; mypy:由 Python 的缔造者 Guido van Rossum(Python 使用者们亲切将其称为龟叔)在 Dropbox 工作时所创建,可以说没有人比他更了解 Python 了,也可以算作是相对权威静态检查工具了; pyright 由微软开源的、基于 TypeScript 和 JavaScript 编写,高度集成于 VS Code,对于经常使用 VS Code 来写代码的人来说或许是个比较好的选择; pytype 由谷歌开源并维护,但相对于其他工具来说检查会较为宽松一些。
pip install flake8
命令安装之后再使用:flake8 <项目文件夹 / 源码文件夹 / .py 文件等>
flake8 --select E121 example.py
E121
这项来自于 pycodestyle 码表中的一项,如果代码导入的模块或包没有缩进或悬挂,那 flake8 就会在检查代码之后抛出信息:example.py:5:9: E121 continuation line under-indented for hanging indent
example.py
文件里的第 5 行到第 9 行代码,我们直接就可以根据 flake8 的结果精准修改检验不通过的部分即可。工具链整合
pyproject.toml
、setup.cfg
等,内容如下:multi_line_output = 3
include_trailing_comma = True
force_grid_wrap = 0
use_parentheses = True
ensure_newline_before_comments = True
line_length = 88
max-line-length = 88
extend-ignore = E203, W503
setup.cfg
文件中:[isort]
multi_line_output = 3
include_trailing_comma = True
force_grid_wrap = 0
use_parentheses = True
ensure_newline_before_comments = True
line_length = 88
[flake8]
max-line-length = 88
extend-ignore = E203, W503
# code_fmt.sh
WORKDIR=$PWD
isort $WORKDIR \
&& black $WORKDIR --skip-string-normalization \
&& flake8 $WORKDIR
Format on Save
的选项,这样在我们每次保存代码文件时,就会自动帮我们格式化:作者:100gle,练习时长不到两年的非正经文科生一枚,喜欢敲代码、写写文章、捣鼓捣鼓各种新事物;现从事有关大数据分析与挖掘的相关工作。
赞 赏 作 者
更多阅读
特别推荐
点击下方阅读原文加入社区会员
评论