Skip to content

函数结构

让我们深入研究一个用户定义的函数(如下所示)并理解其各个组成部分:

python
def adder(f, s, t = None):
    """
    返回 f, s 和 t 的和。
    如果未提供 t,
    则返回 f 和 s 的和。
    """
    result = f + s # 避免修改传入的参数 s
    if t is not None: # 检查是否提供了 t (更健壮的方式)
        result += t
    return result

(注意: 原代码直接修改了参数 s (s = f + s),这不是一个好习惯,尤其当 s 是可变类型时。这里改为使用新变量 result。同时,if t: 对于 t=0 的情况会有问题,改为 if t is not None 更准确。)

函数头 (Function Header)

python
def adder(f, s, t = None):

函数头以关键字 def 开始。

函数名称跟在 def 关键字之后。由于它是一个标识符,因此在命名时遵循相同的命名法。在上面的示例中,adder 是函数名称。

函数名称后跟一对圆括号 ( )

如果函数需要任何参数,则将它们括在圆括号内。f, s, t = None 是函数的三个参数。

最后,函数头以冒号结束。

函数体 (Function Body)

函数体由一个或多个 Python 语句组成,这些语句与函数头具有相同的缩进量(4 个空格)。

一个好的做法是在函数体的开头包含文档字符串 (docstring),简要说明其工作原理。此文档字符串可以是单行或多行字符串字面量。在上面的示例中,文档字符串是:

python
    """
    返回 f, s 和 t 的和。
    如果未提供 t,
    则返回 f 和 s 的和。
    """

此文档字符串后跟一系列表示要执行的指令集的语句。上面示例中的指令集是

python
    result = f + s
    if t is not None:
        result += t

代码块最终以 return 语句结束,该语句返回一个或多个值。

python
    return result

在上面的示例中,返回的是 result 的值,即总和。

缺失 return 语句或返回没有值的 return 语句意味着该函数返回 None。这些函数称为 void 函数 (或更准确地说,返回 None 的函数),它们通常通过 print() 函数显示语句的结果。