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

在之前的文章中代码检查规则:Java语言案例详解学习了Java的检查规则。我们今天将学习《代码检查规则: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函数,就可以避免重复,高效完成相应字符串的构建。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值