如何在 Python 中定义和使用默认参数?
在 Python 中,函数可以采用默认参数,这相当于在函数定义时为某些参数指定了默认值,这样当调用函数时,如果不传递这些参数,默认值将被使用。
可以使用以下语法为函数定义默认参数:
def function_name(param1=default_value1, param2=default_value2):
# 函数体
如果没有指定参数的默认值,则默认值为 None。定义默认参数时,必须将它们放在所有非默认参数的后面。
例如,我们可以定义一个函数 add ,它使用默认参数:
def add(x, y=1):
return x + y
在上面的示例中,默认参数 y 的值是 1。如果我们调用 add 函数时只传递一个参数,那么 y 将采用默认值:
>>> add(5) 6
在上面的示例中,函数调用 add(5) 返回 6。因为 5 是 x 的值,而 y 没有传递,因此 y 的值为默认值 1。
如果我们传递第二个参数,则 y 的值将被覆盖:
>>> add(5, 3) 8
在上面的示例中,函数调用 add(5, 3) 返回 8。因为我们传递了两个参数,因此 y 的值为传递的值 3。
Python 还支持在函数定义中使用多个默认参数,这对于有多个可选参数的函数非常有用。
def func(p1, p2=True, p3=None):
# 函数体
在上面的示例中,函数 func 有三个参数:p1 为必需参数,p2 和 p3 为可选参数,它们都有默认值。当函数调用时只传递 p1,p2 和 p3 将采用它们的默认值:
>>> func("hello")
在上面的示例中,我们将 "hello" 作为 p1 的值传递给函数 func,而其他两个参数使用了它们的默认值。
当我们传递多个参数时,传递的值将按从左到右的顺序赋给函数参数:
>>> func("hello", False, 42)
在上面的示例中,我们传递三个参数,"hello" 赋给 p1,False 赋给 p2,42 赋给 p3。
需要注意的是,如果函数有多个参数,并且其中一个是可变长度参数(例如 *args),则需要格外小心,否则默认参数值可能会被错误地赋给可变长度参数。这是因为 Python 处理默认参数和可变长度参数的方式比较特殊。为了避免这种问题,通常建议将可变长度参数放在函数定义的末尾。
def func(p1, p2=None, *args):
# 函数体
在上面的示例中,我们将可变长度参数 *args 放在了函数定义的末尾,以避免出现参数混淆的问题。
