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 语句的程序中,这种做法让人更容易明白程序使用的各个模块来自哪里。

11.4 测试代码

第11章使用 pytest 模块中的工具来为函数和类编写测试。不仅学习了如何编写测试函数,以核实函数和类的行为符合预期,而且学习了如何使用夹具来高效地创建可在测试文件中的多个测试函数中使用的资源。

测试是很多初学者并不熟悉的主题。作为初学者,你并非必须为自己尝试的所有项目编写测试。但是,在参与工作量较大的项目时,应该对自己编写的函数和类的重要行为进行测试。这样就能够确信,自己所做的工作不会破坏项目的其他部分,让你能够随心所欲地改进既有代码。如果不小心破坏了原来的功能,你马上就会知道,从而能够轻松地修复问题。比起等到不满意的用戶报告 bug 后再采取措施,在测试未通过时采取措施要容易得多。

如果你在项目中纳入了测试,其他程序员将更敬佩你。他们不仅能够更得心应手地使用你编写的代码,也更愿意与你合作开发项目。要给其他程序员开发的项目贡献代码,就必须证明你编写的代码通过了既有的测试,而且通常需要为你添加的新行为编写测试。

请通过多多开展测试来熟悉代码测试过程。对于自己编写的函数和类,请编写针对其重要行为的测试。但在早期的项目中,不必以编写全覆盖测试用例为目标,除非有充分的理由。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值