Python 工具鏈讓你寫的代碼更規(guī)范

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 已經(jīng)加上了類型注解,因此在現(xiàn)有的部分參數(shù)所占寬度的基礎(chǔ)上又?jǐn)U展了一些,所以如果我們顯示器的寬度不夠時,就需要橫向拖動才能查看參數(shù)信息;而最好的辦法就是采取豎向的方式進(jìn)行排列,便于我們能自上而下的一覽無遺。所以使用 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 環(huán)境中,然后在代碼中運行: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 部分的代碼進(jìn)行規(guī)整,同時它會按照內(nèi)置庫(及字母順序)、第三方庫以及本地自有模塊的次序?qū)ξ覀兯鶎?dǎo)入的部分進(jìn)行排列。這樣我們的代碼不僅看起來清爽了許多,同時也能準(zhǔn)確定位到我們已經(jīng)導(dǎo)入的部分有哪些。isort <項目文件夾 / 源碼文件夾 / .py 文件等>
靜態(tài)檢查工具
pylint:PyQCA 團(tuán)隊維護(hù),提供了高度的可配置項(這當(dāng)然也是缺點),如果你有在 VS Code 編寫過 Python 代碼,那么有可能就會碰到讓你安裝 pylint 的情況; flake8:仍是由 PyQCA 團(tuán)隊維護(hù),它在功能上和 pylint 存在重疊的地方,但它也集成了 PEP8、McCabe 以及第三方插件等多個部分,功能上比 pylint 相對豐富一些; mypy:由 Python 的締造者 Guido van Rossum(Python 使用者們親切將其稱為龜叔)在 Dropbox 工作時所創(chuàng)建,可以說沒有人比他更了解 Python 了,也可以算作是相對權(quán)威靜態(tài)檢查工具了; pyright 由微軟開源的、基于 TypeScript 和 JavaScript 編寫,高度集成于 VS Code,對于經(jīng)常使用 VS Code 來寫代碼的人來說或許是個比較好的選擇; pytype 由谷歌開源并維護(hù),但相對于其他工具來說檢查會較為寬松一些。
pip install flake8 命令安裝之后再使用:flake8 <項目文件夾 / 源碼文件夾 / .py 文件等>
flake8 --select E121 example.py
E121 這項來自于 pycodestyle 碼表中的一項,如果代碼導(dǎo)入的模塊或包沒有縮進(jìn)或懸掛,那 flake8 就會在檢查代碼之后拋出信息:example.py:5:9: E121 continuation line under-indented for hanging indent
example.py 文件里的第 5 行到第 9 行代碼,我們直接就可以根據(jù) flake8 的結(jié)果精準(zhǔn)修改檢驗不通過的部分即可。工具鏈整合
pyproject.toml、setup.cfg 等,內(nèi)容如下: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,練習(xí)時長不到兩年的非正經(jīng)文科生一枚,喜歡敲代碼、寫寫文章、搗鼓搗鼓各種新事物;現(xiàn)從事有關(guān)大數(shù)據(jù)分析與挖掘的相關(guān)工作。
贊 賞 作 者

更多閱讀
特別推薦

點擊下方閱讀原文加入社區(qū)會員
評論
圖片
表情
