Python 中函数调用缺少参数时如何引发异常

Nic*_*eda 2 python exception

如果我有这个功能

def my_function(a,b,c):
Run Code Online (Sandbox Code Playgroud)

当用户调用该函数时,他们省略最后一个参数

print(my_function(a,b))
Run Code Online (Sandbox Code Playgroud)

我应该提出什么例外?

Joh*_*n B 5

正如其他人提到的,TypeError如果使用错误数量的静态声明参数调用函数,Python 将引发 a 。自 Python 以来,似乎没有实际的理由来覆盖此行为以引发您自己的自定义错误消息:

\n\n
TypeError: f() takes 2 positional arguments but 3 were given\n
Run Code Online (Sandbox Code Playgroud)\n\n

很有说服力。

\n\n

但是,如果您想执行此操作,并且可以选择允许第二个参数,则可以使用*args.

\n\n
def my_function(a, *args):\n    b = None\n    if len(args) > 1:\n        raise TypeError("More than 2 arguments not allowed.")\n    elif args:\n        b = args[0]\n\n    # do something with a and possibly b.\n
Run Code Online (Sandbox Code Playgroud)\n\n

编辑:考虑到 OP\xe2\x80\x99s 注释中的新附加详细信息,建议默认关键字参数的另一个答案更合适。

\n