

一个简单的步骤让你的 Python 代码更干净
source link: https://www.51cto.com/article/721612.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

一个简单的步骤让你的 Python 代码更干净
说起来容易做起来难,我们都知道代码可读性非常重要,但是写的时候总是随心所欲,不考虑类型提示、import 排序、PEP8 规范。今天分享一个小技巧,通过一个简单的步骤就可以让你的 Python 代码更干净。
这就是 pre-commit:

可以让你的代码提交之前自动检查是否符合你想要的规范。
使用之前,先 pip 安装一下:
pip install pre-commit
然后在项目的根目录下创建两个文件:.pre-commit-config.yaml 和 pyproject.toml。
.pre-commit-config.yaml 文件内容如下:
exclude: _pb2\.py$
repos:
- repo: https://github.com/psf/black
rev: 22.3.0
hooks:
- id: black
args: [--skip-string-normalization]
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.0.1
hooks:
- id: check-docstring-first
- id: check-json
- id: check-merge-conflict
- id: check-yaml
- id: debug-statements
- id: end-of-file-fixer
- id: trailing-whitespace
- id: requirements-txt-fixer
- repo: https://github.com/pre-commit/pygrep-hooks
rev: v1.9.0
hooks:
- id: python-check-mock-methods
- id: python-use-type-annotations
- repo: https://github.com/pre-commit/mirrors-mypy
rev: "v0.910"
hooks:
- id: mypy
args:
[
--ignore-missing-imports,
--warn-no-return,
--warn-redundant-casts,
--disallow-incomplete-defs,
]
additional_dependencies: [types-all]
- repo: https://github.com/PyCQA/isort
rev: 5.9.3
hooks:
- id: isort
args: [--profile, black, --filter-files]
这里面配置了 black、mypy、check-docstring-first、isort 等工具,id 就是对应的工具,可以说这个配置文件基本上就够用了。
在 .pre-commit-config.yaml 文件中,我们可以指定将使用哪些挂钩,在 pyproject.toml 中,我们可以为这些单独的钩子指定参数。
pyproject.toml 文件内容如下:
[tool.black]
line-length = 88
target-version = ["py38"]
[tool.isort]
profile = "black"
multi_line_output = 3
这里配置了 black 和 isort 的相关配置。
然后执行在项目的根目录执行 pre-commit install 命令,就可以安装 pre-commit 插件。
然后每次更新代码,提交代码时,这些钩子都会触发,会自动执行如下操作:
排序 import
PEP8 的格式代码
检查您的 yaml 和 json 文件的正确性
类型检查(如果你使用了类型提示)

你可以将这两个文件拷贝到自己的项目根目录中,然后执行一次 pre-commit install,这样每次提交代码的时候,都是干净的代码,是不是很方便?
Recommend
-
19
夜深了。 我的同事把这周写的代码提交了。我们在开发一个图形编辑器画布,已经实现了形状调整功能,即通过拖拽形状边缘的手柄来调整形状(比如矩形和椭圆形)。 代码可以运行。 但重复代码有点多。每一种形状(比...
-
24
【51CTO.com快译】在金融行业,可...
-
1
很干净的50句话,让你豁然开朗_生活百味_IT密码1、事情总会在你放弃之后开始变好。2、追不上的,不追。背不动的,放下。看不惯的,删除。3、看清一个人何必去揭穿,讨厌一个人又何必去翻脸。4、生活,就是一边拥有,一边失去;一边选择,...
-
7
使用 React 和 TypeScript something 编写干净代码的10个必知模式更新日期: 2022-03-09阅读量: 60标签:
-
1
《代码规范》如何写出干净的代码(一) ...
-
7
今天来分享几个编写干净的JavaScript代码的技巧!1. 更好的命名在 JavaScript 中,良好命名的关键不在于最短的变量名,而在于最具描述性的变量名。(1)减少幻...
-
3
-
7
“干净”的代码,贼差的性能 作者 | Casey Muratori 译者| 核子可乐 策划| 褚杏娟 如今很多机构里传授的所谓编程“最佳实践”,压根就是随时可能爆炸的性能灾难。 很多...
-
5
世界级编程大师Bob 大叔为“干净代码”辩护遭质疑:时代变了,别用Clean Code那套要求我们了!
-
9
再见了,干净整洁的代码 这是一个深夜。 我的同事刚刚提交了他们写了一周的代码。我们正在开发一个图形编辑器画布,他们实现了通过拖动矩形和椭圆边缘的小手柄来调整其大小的功能。 代码成功了...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK