让Python代码符合PEP8的第三方库

目录

前言

库的推荐

flake8【检查Python代码】

安装

案例

缺点

black【修改Python代码】

安装

案例

 结语

参考


前言

Python学习过程中,常常听到一个词——“Pythonic”。这是一种代码风格,至于什么样的风格才算是Pythonic,并没有一个明确的定义。

不过,Python发展的30年里,众多使用者在实际环境中慢慢达成一些代码编写方面的共识,总结出了一些可供参考的经验或是规则,PEP8就是其中之一。pep8规范(官网链接)

PEP8中包含的内容并不少,如果我记不住怎么办,接下来就来推荐两个能够辅助你写出符合PEP8规范代码的第三方库。

库的推荐

flake8【检查Python代码】

安装

flake8能够扫描并检测你的Python代码,并给出符合规范的建议。安装命令:

# Linux/macOS
$ python3 -m pip install flake8

# Windows
$ python -m pip install flake8

(如果pip路径已配置完成,可以直接pip install flake8)

案例

使用方法很简单,比如我编写了这么一段代码test.py:

from math import hypot

def vectorabs(x,y):
    return hypot(x, y)

x = 3
y=4
print(vectorlength(x,y))

math库中的hypot函数用于返回欧几里得范数,如果参数x,y表示一个向量,那么函数返回向量的模。

接下来让flake8对代码进行检查,命令及输出结果如下:

让Python代码符合PEP8的第三方库_第1张图片

 以第一行输出为例“test.py”是检查的代码文件名;

“3:1”指第三行第一列;

“E302”为flake8错误代码;

剩余部分是flake8给出的修改建议,此处为导入包的语句应该和函数定义语句之间空两行,但是我空了一行。

第二条输出建议是,函数的参数x,y逗号后面应该加入一个空格。

......

缺点

flake8并不能完美地给出建议,比如常量的命名应该全为大写,并适当加入下划线以分割语义,如PI,MAX_NUM等。

而变量和函数名的规范应当是小写,并加以下划线做语义分割。

flake8是不知道你起的名字是不是用来存储常数值的,也就没办法建议你用大写还是小写。同样的,如果你命名中并未用下划线做语义上的分割,flake8也不会给予建议,因为它也不知道哪几个字母放一起就是一个单独的语义块。

因此,flake8不会过多在命名上提供建议,这些情况就需要我们自己注意了。

black【修改Python代码】

flake8很好用,那万一我酣畅淋漓地写了几百行上千行代码,一检测发现每行有两三处需要修改,多麻烦、多累呀。

那black就可以出场了,它能帮你自动修改Python代码。

安装

# Linux/macOS
$ python3 -m pip install black

# Windows
$ python -m pip install black

案例

仍旧以flake8中的脚本为例,black --check [filename]命令,判断代码是否需要修改。

让Python代码符合PEP8的第三方库_第2张图片

 (输出的框框是编码问题,一个心碎的表情,无需关注)

black --diff [filename],查看black将要做的修改、

让Python代码符合PEP8的第三方库_第3张图片

 加上“—”标记的是需要修改部分,而修改后的内容为“+”标记后的部分。

如,上图显示的第一个“—”处,是函数定义语句,而它的修改建议“+”之后,是在定义语句前多空一行,并且函数结束后再空两行。

black [filename]命令,修改代码:

让Python代码符合PEP8的第三方库_第4张图片

 执行这条命令,black就会修改你的源码。之后再查看源码,就显得没那么辣眼睛了。

让Python代码符合PEP8的第三方库_第5张图片

结语

要写出Pythonic的代码,需要大量阅读他人编写的规范代码,并加以长时间的练习才能达到。

两个第三方库可以提供些许的帮助,但道阻且长,请君努力。

参考

Write More Pythonic Code(原文链接,收录于PyCoder's Weekly #517 March 22, 2022)

你可能感兴趣的:(python手记,python,经验分享)