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

时间:2018-03-24 05:08:09

标签: python exception

如果我有这个功能

def my_function(a,b,c):

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

print(my_function(a,b))

我应该提出什么例外?

2 个答案:

答案 0 :(得分:2)

在评论中讨论之后,你想要做的就是 catch 一个异常,如果缺少一个默认参数,就会传递。

首先,如果缺少参数,Python将会引发<div class="item-body"> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ac eleifend risus.</p> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ac eleifend risus.</p> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ac eleifend risus.</p> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ac eleifend risus.</p> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ac eleifend risus.</p> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ac eleifend risus.</p> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ac eleifend risus.</p> </div>

但是你不需要捕获它有默认参数,因为Python已经提供了一种方法来实现这一点。

TypeError

答案 1 :(得分:1)

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

TypeError: f() takes 2 positional arguments but 3 were given

非常有说服力。

但是,如果你想这样做,也许可以选择允许第二个参数,你可以使用*args

def my_function(a, *args):
    b = None
    if len(args) > 1:
        raise TypeError("More than 2 arguments not allowed.")
    elif args:
        b = args[0]

    # do something with a and possibly b.

编辑:鉴于OP评论中的新增详细信息,建议使用默认关键字参数的其他答案更合适。