Python从入门到精通(第3版)
上QQ阅读APP看书,第一时间看更新

2.1.3 编码规范

下面给出两段实现同样功能的代码,如图2.10所示。

图2.10 两段功能相同的Python代码

大家在学习时,愿意看到图2.10中的左侧代码还是右侧代码?答案应该是一致的,大家肯定都喜欢阅读图2.10中右侧的代码,因为它看上去更加规整,这是一种最基本的代码编写规范。遵循一定的代码编写规则和命名规范可以使代码更加规范化,对代码的理解与维护起到至关重要的作用。

本节将对Python代码的编写规则以及命名规范进行介绍。

1.编写规则

Python中采用PEP 8作为编码规范,其中PEP是Python enhancement proposal的缩写,其中文译名为Python增强建议书,而PEP 8表示版本,它是Python代码的样式指南。下面给出PEP 8编码规范中的一些应该严格遵守的条目。

 每条import语句只导入一个模块,尽量避免一次导入多个模块。图2.11为推荐的写法,而图2.12为不推荐的写法。

 不要在行尾添加分号“;”,也不要用分号将两条命令放在同一行。例如,图2.13中的代码为不规范的写法。

图2.11 推荐的写法

图2.12 不推荐的写法

图2.13 不规范的写法

 建议每行不超过80个字符,如果超过,建议使用小括号“()”将多行内容隐式地连接起来,而不推荐使用反斜杠“\”进行连接。例如,如果一个字符串文本在一行上显示不下,那么可以使用小括号“()”将其进行分行显示,代码如下:

     01  print("我一直认为我是一只蜗牛。我一直在爬,也许还没有爬到金字塔的顶端。"
     02        "但是只要你在爬,就足以给自己留下令生命感动的日子。")

例如,以下通过反斜杠“\”进行连接的做法是不推荐使用的。

     01  print("我一直认为我是一只蜗牛。我一直在爬,也许还没有爬到金字塔的顶端。\
     02  但是只要你在爬,就足以给自己留下令生命感动的日子。")

不过以下两种情况除外:导入模块的语句过长;注释里的URL。

 使用必要的空行可以增加代码的可读性。一般在顶级定义(如函数或者类的定义)之间空两行,而方法定义之间空一行。另外,在用于分隔某些功能的位置处也可以空一行。

 通常情况,运算符两侧、函数参数之间、逗号“,”两侧建议使用空格进行分隔。

 应该避免在循环中使用+和+=操作符累加字符串。这是因为字符串是不可变的,这样做会创建不必要的临时对象。推荐的做法是将每个子字符串加入列表中,然后在循环结束后使用join()方法连接列表。

 适当地使用异常处理结构来提高程序的容错性,但不能过于依赖异常处理结构,适当的显式判断还是必要的。

说明

在编写Python程序时,建议严格遵循PEP 8编码规范。完整的Python编码规范请参考PEP 8。

2.命名规范

命名规范在编写代码中起到很重要的作用,虽然不遵循命名规范,程序也可以运行,但是使用命名规范可以更加直观地了解代码所代表的含义。下面将介绍Python中常用的一些命名规范。

 模块名尽量短小,并且全部使用小写字母,可以使用下画线分隔多个字母。例如,game_main、game_register、bmiexponent都是推荐使用的模块名称。

 包名尽量短小,并且全部使用小写字母,不推荐使用下画线。例如,com.mingrisoft、com.mr、com.mr.book都是被推荐使用的包名称,而com_mingrisoft则是不被推荐使用的。

 类名采用单词首字母大写形式(即Pascal风格)。例如,定义一个借书类,可以命名为BorrowBook。

说明

Pascal是以纪念法国数学家Blaise Pascal而命名的一种编程语言,Python中的Pascal命名法就是根据该语言的特点总结出来的一种命名方法。

 模块内部的类名采用下画线“_”+Pascal风格的类名组成。例如,在BorrowBook类中的内部类,可以使用_BorrowBook进行命名。

 函数、类的属性和方法的命名规则同模块类似,也是全部采用小写字母,多个字母间用下画线“_”进行分隔。

 常量全部采用大写字母命名,多个单词间可以使用下画线“_”进行分隔。

 使用双下画线“__”开头的实例变量或方法是类私有的。