3大利器推荐,帮你写出规范漂亮的Python代码
Python学了好久,但是拿出来review的代码好像总是长的不够俊美,不够工整!因此标准化的代码规范就显得尤为重要。今天就来推荐3个利器,python界广泛认同的代码风格规范PEP8和两个超牛的工具pylint和black,分别用于代码风格规范检测和自动优化。 1、代码风格规范PEP8首先讲一讲为什么要使用PEP8,我们先来看下面这段代码,在相关函数定义后,它是可以正常编译执行的,但是这段代码的怪异风格无论是让别人阅读还是自己阅读都会感到很难受。这就需要一种普遍认同的代码风格规范,对行长度、缩进、多行表达式、变量命名约定等内容进行统一,这就是PEP8的意义所在。 需要说明的是,PEP 8中有一些规范是为了方便阅读,而有一些规范实实在在地影响着代码的性能、容错率或者重构难度。 比如上面这段代码,foo函数仅在满足条件的情况下有返回值、bar函数仅在不满足条件的情况下有返回值,这样的代码兼容性会比较差,正确的做法是保持代码一致性,,函数中的返回语句都应该返回一个表达式,或者都不返回: 关于PEP8就简单介绍到这里,有兴趣的朋友可以自行查阅文档。当我们打开文档的时候会发现PEPE 8规范的内容非常多、非常细。 作为一名新手如果要一条条解读、一条条记住这些规定实在不是件容易的事情。然而养成良好的代码编写习惯对新手来说又是十分重要的。 下面我们就正式进入主题,介绍两个简单又实用的代码自动化检测和优化工具,可以帮助我们快速规范自己的代码风格。 2、自动检测工具PylintPylint 是一个检查违反 PEP8 规范和常见错误的库,它会自动查找不符合代码风格标准和有潜在问题的代码,并在控制台输出代码中违反规范和出现问题的相关信息。 1).安装与使用 与python的其他库一样,直接 pip install pylint 即可完成安装,另外anaconda自带pylint,所以如果安装过anaconda不必再单独安装此库。 pylint的使用也非常简单,最基本的用法直接在控制台输入 pylint 路径/模块名 即可对相关模块的代码风格规范 进行检查,检查结果会在控制台输出。 建议结合 pylint --help 的提示进行学习和检索。介绍完pylint的基本情况,我们来结合一个实例进行详细说明。 2).实例演示说明 这里我找了自己刚学python时写的一段代码进行测试:
乍一看好像没什么大问题,但是经过pylint检查后却给出了一堆问题提示(下图),我们来看检查结果,每行以大写字母+冒号开头的信息都是一处反馈提示。 其中开头的大写字母表示错误类型(主要有CRWEF几类);以逗号间隔的两个数字表示发现问题的位置(行和列);其后是对问题的具体描述,括号里的内容称为message id,可以简单理解为错误类型的详细分类,通过 pylint --help-msg= C——违反代码风格标准; R——代码结构较差; W——关于细节的警告; E——代码中存在错误; F——导致Pylint无法继续运行的错误。 例如,我们执行 pylint --help-msg=trailing-newlines 指令,会在控制台输出对 trailing-newlines 这种问题的详细描述: pylint输出的最后一行是其对本次检测的评分,满分为10分,可以看到我的代码本次评分为0分T_T。 既然知道了自己的代码哪里不规范,就去针对性地改正吧,根据提示结果首先将函数参数赋值 = 两边的空格去掉,再将多余的空行去掉,然后运行一下pylint再次进行检测,得到如下结果: 可以看到,刚才修改过的代码相关问题提示已经没有了,评分也从0分提高到了3.33分。但是仍然有很多问题,这里就要注意了,PEP8并不是要百分百遵守的,当遵循PEP 8规范会使代码可读性变差、会跟周围代码风格不一致的时候,还是要遵循自己的判断。 这种情况下,pylint也提供了一种操作,可以手动屏蔽某些问题提示,以刚才的代码为例,剩下的几个问题主要是因为使用了Tab键、变量命名不规范、缺少文档说明造成的,我们可以使用 pylint --disable=mixex-indentation,invalid-name,missing-docstring 模块名称 命令对相关规范进行屏蔽重新检测,发现问题提示全部消除,评分也提升到了10分。 (编辑:ASP站长网) |