📅  最后修改于: 2023-12-03 15:10:10.531000             🧑  作者: Mango
Python 函数通常定义了其预期的参数数量和类型,但当调用函数时,给出的参数数量或类型可能与定义的不同。在这种情况下,Python 会引发一个 TypeError
错误,提示实参与形参不匹配。例如,定义一个接受 2 个位置参数的函数 add
:
def add(x, y):
return x + y
如果调用该函数时给出了 3 个参数,Python 将引发一个 TypeError
:
>>> add(1, 2, 3)
TypeError: add() takes 2 positional arguments but 3 were given
这说明函数预期只接受 2 个参数,但实际上给出了 3 个参数。
要解决这个问题,可以修改函数的参数个数或类型,或者调用时只提供预期的参数。例如,如果要忽略第三个参数,可以使用以下代码:
>>> add(1, 2) # 使用 2 个参数调用函数
3
如果希望函数能够接受多个参数,可以使用以下两种方法之一:
使用可变参数,例如 *args
,表示接受任意数量的位置参数:
def add(*args):
return sum(args)
>>> add(1, 2, 3, 4)
10
使用可变关键字参数,例如 **kwargs
,表示接受任意数量的关键字参数:
def add(**kwargs):
return sum(kwargs.values())
>>> add(x=1, y=2, z=3)
6
这样就可以实现接受任意数量的参数,而不会因为参数个数或类型不匹配而出错。