函数编写指南
在设计函数样式时,您需要牢记一些细节。 函数应该有描述性的名字,这些名字应该使用小写字母和下划线。 描述性名称可帮助您和其他人了解您的代码试图做什么。 模块名称也应该使用这些约定。
每个函数都应该有一个注释,简明地解释函数的作用。 此注释应紧跟在函数定义之后并使用 docstring 格式。 在文档完善的函数中,其他程序员可以通过仅阅读文档字符串中的描述来使用该函数。 他们应该能够相信代码按照描述的那样工作,只要他们知道函数的名称、它需要的参数以及它返回的值的类型,他们就应该能够在他们的程序中使用它。
如果为参数指定默认值,则等号两边不应使用空格:
def function_name(parameter_0, parameter_1='default value')
函数调用中的命名参数应使用相同的约定:
function_name(value_0, parameter_1='value')
PEP 8 (https://www.python.org/dev/peps/pep-0008) 建议您将代码行限制为 79 个字符,以便每一行都可以在大小合理的编辑器窗口中看到。 如果一组参数导致函数的定义超过 79 个字符,请在定义行的左括号后按 ENTER。 在下一行,按两次 TAB 键将参数列表与函数体分开,函数体只会缩进一级。
大多数编辑器会自动排列任何额外的参数行以匹配您在第一行建立的缩进:
def function_name(
parameter_0, parameter_1, parameter_2,
parameter_3, parameter_4, parameter_5):
function body...
如果您的程序或模块有多个函数,您可以用两个空行分隔每个函数,以便更容易看到一个函数在哪里结束以及下一个函数从哪里开始。
所有导入(import
)语句都应写在文件的开头。 唯一的例外是如果您在文件的开头使用注释来描述整个程序。
总结
在本章中,您学习了如何编写函数和传递参数,以便您的函数能够访问它们完成工作所需的信息。 您学习了如何使用位置参数和关键字参数,以及如何接受任意数量的参数。 您看到了显示输出的函数和返回值的函数。 您学习了如何将函数与列表、字典、if 语句和 while 循环一起使用。 您还看到了如何将您的函数存储在称为模块的单独文件中,这样您的程序文件就会更简单、更容易理解。 最后,您学会了设计函数的样式,这样您的程序将继续保持良好的结构,并且尽可能容易让您和其他人阅读。
作为一名程序员,您的目标之一应该是编写简单的代码来执行您想要的操作,而函数可以帮助您做到这一点。 它们允许您编写代码块,一旦您知道它们可以工作,就不要管它们。 当您知道一个函数正确地完成了它的工作时,您可以相信它会继续工作并继续您的下一个编码任务。
函数允许您编写一次代码,然后根据需要多次重用该代码。 当您需要在一个函数中运行代码时,您需要做的就是编写一个单行调用,该函数就会完成它的工作。 当您需要修改一个函数的行为时,您只需修改一个代码块,并且您所做的更改会在您调用该函数的任何地方生效。
使用函数使您的程序更易于阅读,好的函数名概括了程序每个部分的作用。 与阅读一长串代码块相比,阅读一系列函数调用可以让您更快地了解程序的作用。
函数还使您的代码更易于测试和调试。 当程序的大部分工作由一组函数完成时,每个函数都有特定的工作,测试和维护您编写的代码会容易得多。 您可以编写一个单独的程序来调用每个函数并测试每个函数是否在它可能遇到的所有情况下都能正常工作。 当您这样做时,您可以确信您的函数在您每次调用它们时都能正常工作。
在第 9 章中,您将学习编写类。 类将函数和数据组合成一个简洁的包,可以以灵活高效的方式使用。