Python 函数的基本知识

已完成

了解 Python 的编程基础知识后,下一步就该了解函数。 最简单形式的函数包含始终返回值的代码。 在某些情况下,函数也具有可选或必需的输入。

开始编写的代码与程序的其他部分重复时,正好可以将该代码提取到函数中。 尽管通过函数共享公共代码非常有用,但也可以将各部分提取到更小(更易读)的函数中,以限制代码的大小。

使用更小的函数避免重复并防止出现大型函数的程序更易读且更易维护。 当某些功能不能正常工作时,它们也更易于调试。

有关函数输入的几个规则对于你可以充分利用函数必须提供的所有功能至关重要。

重要

虽然我们使用术语“输入”来描述函数要接收的内容,但这些元素通常称为“参数”、“形参”或“实参”。 为了在本模块中保持一致,我们将输入称为“参数”。

不带参数的函数

若要创建函数,请使用关键字 def,后面跟名称、括号,然后是包含函数代码的主体:

def rocket_parts():
    print("payload, propellant, structure")

在本例中,rocket_parts 是函数的名称。 该名称后跟空括号,这表示无需参数。 最后是代码,缩进四个空格。 若要使用函数,必须使用名称和括号调用它:

rocket_parts()
payload, propellant, structure

rocket_parts() 函数不接收任何参数,而是打印一个语句。 如果需要使用某个函数返回的值,则可以将函数输出赋予变量:

output = rocket_parts()
payload, propellant, structure
output is None
True

变量 output 的值为 None 可能看起来很奇怪。 这是因为 rocket_parts() 函数未显式返回值。 在 Python 中,如果函数未显式返回值,则它将隐式返回 None。 如果更新函数以返回字符串而不是打印字符串,则会导致 output 变量具有不同的值:

def rocket_parts():
    return "payload, propellant, structure"
output = rocket_parts()
output
payload, propellant, structure

如果需要使用函数的值,则该函数必须显式返回。 否则将返回 None

备注

不需要始终为函数的返回赋值。 在大多数情况下,如果函数未显式返回值,则意味着无需赋予或使用返回的隐式 None 值。

必需参数和可选参数

在 Python 中,多个内置函数都需要参数。 某些内置函数可以使参数成为可选参数。 内置函数可以立即使用,因此无需显式导入它们。

需要参数的内置函数的一个示例是 any()。 此函数接收可迭代对象(例如列表)并在可迭代对象中的任何项目为 True 时返回 True。 否则,它将返回 False

any([True, False, False])
True
any([False, False, False])
False

如果不使用任何参数调用 any(),则会引发一个异常,其中会提供有帮助的信息。 错误消息说明需要至少一个参数:

 any()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: any() takes exactly one argument (0 given)

可以使用另一个名为 str() 的内置函数来验证某些函数是否允许使用可选参数。 此函数使用参数创建字符串。 如果未传入任何参数,它将返回空字符串:

str()
''
str(15)
'15'