📌  相关文章
📜  接受 2 个位置参数,但给出了 3 个 - Python (1)

📅  最后修改于: 2023-12-03 15:10:10.531000             🧑  作者: Mango

Python: 接受 2 个位置参数,但给出了 3 个

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

如果希望函数能够接受多个参数,可以使用以下两种方法之一:

  1. 使用可变参数,例如 *args,表示接受任意数量的位置参数:

    def add(*args):
        return sum(args)
    
    >>> add(1, 2, 3, 4)
    10
    
  2. 使用可变关键字参数,例如 **kwargs,表示接受任意数量的关键字参数:

    def add(**kwargs):
        return sum(kwargs.values())
    
    >>> add(x=1, y=2, z=3)
    6
    

这样就可以实现接受任意数量的参数,而不会因为参数个数或类型不匹配而出错。