函数结构
让我们深入研究一个用户定义的函数(如下所示)并理解其各个组成部分:
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()
函数显示语句的结果。