如果我有这个功能
def my_function(a,b,c):
当用户调用该函数时,它们省略了最后一个参数
print(my_function(a,b))
我应该提出什么例外?
答案 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评论中的新增详细信息,建议使用默认关键字参数的其他答案更合适。