python中设置代码格式,函数编写指南,类的编程风格
4.6 设置代码格式
随着你编写的程序越来越长,确保代码格式一致变得尤为重要。花时间让代码尽可能易于阅读,这不仅有助于你理解程序的功能,也能帮助他人理解你的代码。
为了保证所有人的代码结构大致一致,Python程序员遵循一系列格式设置约定。一旦你学会了编写整洁的Python代码,就能轻松理解他人遵循相同指南编写的代码。成为一名专业程序员,应从现在开始遵循这些指南,培养良好的习惯。
4.6.1 格式设置指南
Python Enhancement Proposal (PEP) 用于提出Python语言的修改建议。PEP 8是最古老的PEP之一,为Python程序员提供了代码格式设置的指南。PEP 8的内容详尽,主要涉及复杂的编码结构。
编写者深知代码被阅读的次数远超编写次数。无论是调试、添加新功能还是共享代码,清晰的格式都是关键。若必须在易写和易读之间抉择,Python程序员几乎总倾向于后者。以下指南可助你从一开始就编写出清晰的代码。
4.6.2 缩进
PEP 8推荐每级缩进使用4个空格,这提高了可读性,并留有足够的空间用于多级缩进。
在文档处理中,人们常用制表符而不是空格进行缩进,但这在Python中可能导致问题。确保你的编辑器设置为将制表符转换为指定数量的空格。在编写代码时,尽管可以使用Tab键,但编辑器应插入空格而非制表符。
混合使用制表符和空格可能引发难以诊断的问题。如果已混合使用,应将文件中的所有制表符转换为空格,大多数编辑器具备此功能。
4.6.3 行长
建议每行代码不超过80个字符。虽然现代屏幕每行可容纳更多字符,但标准行长度便于在同一屏幕并排查看多个文件时保持清晰度。PEP 8建议注释行不超过72个字符。
行长度指南并非强制性,一些团队允许最长99个字符。在学习阶段不必过于关注行长度,但在团队协作时,大家普遍遵循PEP 8的指导。大多数编辑器可设置视觉标志(如竖线),提醒你行长度界限。
4.6.4 空行
合理使用空行来分隔代码的不同部分。使用空行组织代码文件,但避免滥用。例如,创建列表的5行代码与处理列表的3行代码间,使用一行空行分隔即可。
空行不影响代码运行,但影响可读性。Python解释器依据水平缩进来解析代码,而不关心垂直间距。
4.6.5 其他格式设置指南
PEP 8包含更多格式设置建议,适用于更复杂的程序结构。随着你学习更高级的Python概念,我们将分享更多PEP 8的相关指南。
8.7 函数编写指南
命名规范
- 函数名应使用描述性名称,且只使用小写字母和下划线。
- 模块命名也应遵循上述约定。
注释和文档字符串
- 每个函数都应包含简要阐述其功能的注释,紧跟在函数定义后面,并采用文档字符串的格式。
参数和关键字实参
- 给形参指定默认值时,等号两边不要有空格:
def function_name(parameter_0, parameter_1='default value')
- 函数调用中的关键字实参也应遵循这种约定:
function_name(value_0, parameter_1='value')
代码行长度
PEP 8 建议代码行的长度不要超过 79 个字符。
如果形参很多,导致函数定义的长度超过 79 个字符,可在函数定义中输入左括号后按回车键,并在下一行连按两次制表符键,从而将形参列表和只缩进一层的函数体区分开来:
def function_name(parameter_0, parameter_1, parameter_2,parameter_3, parameter_4, parameter_5):function body...
函数间距
- 如果程序或模块包含多个函数,可使用两个空行将相邻的函数分开。
import 语句
所有的 import 语句都应放在文件开头。唯一的例外是,你要在文件开头使用注释来描述整个程序。
9.6 类的编程风格
类名应采用驼峰命名法,即将类名中的每个单词的首字母都大写,并且不使用下划线。实例名和模块名都采用全小写格式,并在单词之间加上下划线。
对于每个类,都应在类定义后面紧跟一个文档字符串。这种文档字符串应简洁明了地描述类的功能和用途,以便其他开发者能够快速理解类的用途和使用方法。
对于每个类,都应在类定义后面紧跟一个文档字符串。这种文档字符串应简洁地描述类的功能,你应该遵循编写函数的文档字符串时采用的格式约定。每个模块也都应包含一个文档字符串,对其中的类可用来做什么进行描述。
可以使用空行来组织代码,但不宜过多。在类中,可以使用一个空行来分隔方法;而在模块中,可以使用两个空行来分隔类。
当需要同时导入标准库中的模块和你编写的模块时,先编写导入标准库模块的 import 语句,再添加一个空行,然后编写导入你自己编写的模块的 import 语句。在包含多条 import 语句的程序中,这种做法让人更容易明白程序使用的各个模块来自哪里。