1.2 Python编码规范
一个好的Python代码不仅应该是正确的,还应该是漂亮的、优雅的,读起来赏心悦目。代码布局和排版在很大程度上决定了代码可读性的好坏,变量名、函数名、类名等标识符名称也会对代码的可读性带来一定的影响。开发人员只有通过长期的练习才能具有编写优雅代码的功底和能力。
1.2
1.缩进
Python对代码缩进是硬性要求,严格使用缩进来体现代码的逻辑从属关系。一般以4个空格为一个缩进单位,并且相同级别的代码块应具有相同的缩进量。
在函数定义、类定义、选择结构、循环结构、异常处理结构和with语句等结构中,对应的函数体或语句块都必须有相应的缩进。当某一行代码与上一行代码不在同样的缩进层次上,并且与之前某行代码的缩进层次相同时,表示上一个代码块结束。例如,在Jupyter Notebook或Spyder中输入并运行下面的代码。
def toTxtFile(fn): # 函数定义 with open(fn, 'w') as fp: # 相对def缩进4个空格 for i in range(10): # 相对with缩进4个空格 if i%3==0 or i%7==0: # 相对于for缩进4个空格 fp.write(str(i)+'\n') # 相对于if缩进4个空格 else: # 选择结构的else分支,与if对齐 fp.write('ignored\n') # 相对于else缩进4个空格 fp.write('finished\n') # for循环结构结束,与for对齐 print('all jobs done') # with块结束,与with对齐 toTxtFile('text.txt') # 函数定义结束,调用函数
2.空格与空行
在每个类、函数定义或一段完整的功能代码之后增加一个空行,在运算符两侧各增加一个空格,逗号后面增加一个空格,让代码适当松散一点,不要过于密集。
在实际编写代码时,这个规范需要灵活运用。有些地方增加空行和空格会提高代码的可读性,更利于阅读。但是如果生硬地在所有运算符两侧和逗号后面都增加空格,则会适得其反。
3.标识符命名
变量名、函数名和类名统称为标识符。在为标识符起名字时,应做到“见名知义”,例如,使用age表示年龄、price表示价格、area表示面积。除非是用来临时演示或测试个别知识点的代码片段,否则不建议使用x、y、z或者a1、a2、a3这样的变量名。除了“见名知义”这个基本要求,在Python中定义标识符的时候,还应该遵守下面的规范。
● 必须以英文字母、汉字或下画线开头。
● 名字中可以包含汉字、英文字母、数字和下画线,不能有空格或任何标点符号。
● 不能使用关键字,例如,yield、lambda、def、else、for、break、if、while、try、return作为变量名都是非法的。
● 区分英文字母的大小写,例如,student和Student是不同的变量。
● 不建议使用系统内置的模块名、类型名或函数名、已导入的模块名及其成员名作为变量或自定义函数名,例如,type、max、min、len、list等,也不建议使用其他内置模块和标准库的名字作为变量名或自定义函数名,例如math、random、datetime、re等。
4.续行
尽量不要写过长的语句,应尽量保证一行代码不超过屏幕宽度(并且一般建议一个函数不超过一个屏幕的高度)。如果语句确实太长而超过屏幕宽度,最好在行尾使用续行符“\”表示下一行代码仍属于本条语句,或者使用圆括号把多行代码括起来表示是一条语句。示例如下。
expression1 = 1 + 2 + 3\ # 使用“\”作为续行符 + 4 + 5 expression2 = (1 + 2 + 3 # 把多行表达式放在圆括号中表示是一条语句 + 4 + 5)
5.注释
对关键代码和重要的业务逻辑代码进行必要的注释,方便阅读和维护。在Python中有两种常用的注释形式:#和三引号。“#”用于单行注释,表示本行中“#”符号之后的内容不作为代码运行;三引号常用于大段说明性文本的注释,也可以用于界定包含换行符的长字符串。
代码中加入注释原本是为了方便阅读和理解代码,用来说明关键代码的作用和主要思路,应该源于代码并且高于代码。如果代码已经很好地描述了功能,不建议增加没有必要的注释进行重复说明。
6.圆括号
圆括号除了用来表示多行代码为一条语句,还常用来修改表达式计算顺序,或者增加代码可读性,避免歧义。