写点什么

代码检查规则:Python 语言案例详解

  • 2021 年 11 月 10 日
  • 本文字数:1956 字

    阅读完需:约 6 分钟

代码检查规则:Python语言案例详解

我们今天将学习《代码检查规则:Python 语言案例详解》,内容主要分为两个部分:Python 的代码检查规则和 Python 编码惯例。


Python 代码检查规则的讲解


一套良好的代码检查规则,可以带来代码质量提高,降低缺陷修复和后期维护成本等一系列收益。


Python 代码检查规则主要分为四个大类,分别是代码风格规范、引用规范、定义规范和异常处理规范。


代码风格规范

这一大类的规范规则较为繁琐,具体又可细分以下七个小类,共计 17 条规则:


(1)程序规模规范:

①每行不得超过 120 个字符。

②定义的函数长度不得超过 120 行。

这意味着,在编写代码时,需要时刻注意自己的程序规模,避免冗余,确保写出简洁而高效的代码。


(2)语句规范

因为 Python 与其他语言不同,可以不需要明确的标识符表示语句的结尾,所以规定:

③禁止以分号结束语句。

④在任何情况下,一行只能写一条语句。


(3)括号使用规范

⑤除非用于明确算术表达式优先级、元组或者隐式行连接,否则尽量避免冗余的括号。


(4)缩进规范

⑥禁止使用 Tab 进行缩进,而统一使用 4 个空格进行缩进。


需要将单行内容拆成多行写时规定:

⑦与首行保持对齐;或者首行留空,从第二行起统一缩进 4 个空格。


(5)空行规范

⑧文件级定义(类或全局函数)之间,相隔两个空行;类方法之间,相隔一个空行。


(6)空格规范

⑨括号之内均不添加空格。

⑩参数列表、索引或切片的左括号前不应加空格。

⑪逗号、分号、冒号之前均不添加空格,而是在它们之后添加一个空格。

⑫所有二元运算符前后各加一个空格。

⑬关键字参数或参数默认值的等号前后不加空格。


(7)注释规范

⑭每个文件都必须有文件声明,每个文件声明至少必须包括以下三个方面的信息:版权声明、功能和用途介绍、修改人及联系方式。


另外在使用文档字符串(docstirng)进行注释时,规定:

⑮使用 docstring 描述模块、函数、类和类方法接口时,docstring 必须用三个双引号括起来。

⑯对外接口部分必须使用 docstring 描述,内部接口视情况自行决定是否写 docstring。

⑰接口的 docstring 描述内容至少包括以下三个方面的信息:功能简介、参数、返回值。如果可能抛出异常,必须特别注明。


引用规范

引用规范有严格而具体的规定:

①禁止使用 from……import…… 句式直接导入类或函数,而应在导入库后再行调用。

②每行只导入一个库。

③按标准库、第三方库、应用程序自有库的顺序排列 import,三个部分之间分别留一个空行。


定义规范

(1)在变量定义方面,我们有强制的规范规定:

①局部变量使用全小写字母,单词间使用下划线分隔。

②定义的全局变量必须写在文件头部。

③常量使用全大写字母,单词间使用下划线分隔


(2)函数的定义规范主要体现在函数的返回值以及默认参数的定义上。

为提高代码可读性,对于函数的返回值,规范要求为:

①函数返回值必须小于或等于 3 个。若返回值大于 3 个,则必须通过各种具名的形式进行包装。


为了保障函数的运行效率以及降低后期维护和纠错的成本,对于函数默认参数的定义有如下要求:

②仅可使用以下基本类型的常量或字面常量作为默认参数:整数、bool、浮点数、字符串、None。


(3)类定义的规范包括了四个方面的内容:

①类的命名使用首字母大写的驼峰式命名法。

②对于类定义的成员:protected 成员使用单下划线前缀;private 成员使用双下划线前缀。

③如果一个类没有基类,必须继承自 ovject 类。

④类构造函数应尽量简单,不能包含可能失败或过于复杂的操作。


(4)异常处理规范:

在代码编写中应该尽量避免出现代码异常状态,然而错误有时在所难免,对于这些异常状态的处理,有着明确的规范要求:

①禁止使用双参数形式或字符串形式的语法抛出异常。

②如需自定义异常,应在模块内定义名为 Error 的异常基类。并且,该基类必须继承自 Exception 。其他异常均由该基类派生而来。

③除非重新抛出异常,禁止使用 except:语句捕获所有异常, 一般情况下,应使 except……:语句捕获具体的异常。

④捕捉异常时,应当使用 as 语法,禁止使用逗号语法。


Python 编码惯例


让模块既可被导入又可执行

python 不同于编译型语言,而属于脚本语言,是动态的逐行解释运行,没有统一的程序入口。所以,为了方便模块之间的相互导入,我们通常自定义一个 main 函数,并使用一个 if 语句, if 内置变量 __name__  ==  ‘__main__’  ,在这个 if 条件下,再去执行 main 函数。这样,我们就能够实现,让模块既可被导入又可执行。


 in 运算符的使用

in 一种简洁而高效的运算符,很多时候,合理的使用 in 运算符,可以代替大量的重复判断过程,降低时间复杂度,提高代码的运行效率。


不使用临时变量交换两个值

Python 有更简洁而高效的语句可以实现交换两个值的操作,并无必要引入临时变量来交换两个值。


用序列构建字符串

对于一个字符串列表、元组等,可以用序列来构建字符串,利用一个空字符串和 join 函数,就可以避免重复,高效完成相应字符串的构建。


点击进入获得更多技术信息~~


发布于: 2021 年 11 月 10 日阅读数: 9
用户头像

关注百度开发者中心,收获一手技术干货。 2018.11.12 加入

汇聚百度所有对外开放技术、平台和服务资源,提供全方位支持,助力开发者加速成功,实现开发者、消费者和百度三方共赢。https://developer.baidu.com/

评论

发布
暂无评论
代码检查规则:Python语言案例详解