所以我有一个像:
这样的功能def my_code(arg1, *args):
....
我希望这个函数只能使用2个或3个参数(这意味着* args只能是1或2个参数)。如果参数的数量错误,如何抛出错误消息?如果我使用try / exception,是否有特定的异常类型?
答案 0 :(得分:2)
您可以使用args
获得len
的长度,就像使用任何元组一样。
def my_code(arg1, *args):
if not 0 < len(args) < 3:
raise TypeError('my_code() takes either 2 or 3 arguments ({} given)'
.format(len(args) + 1))
my_code(1) # TypeError: my_code() takes either 2 or 3 arguments (1 given)
my_code(1, 2) # pass
my_code(1, 2, 3) # pass
my_code(1, 2, 3, 4) # TypeError: my_code() takes either 2 or 3 arguments (4 given)
答案 1 :(得分:0)
您的考试是:
if len(args) not in (1,2):
虽然当然有其他方式来表达这一点。
对于异常,如果使用错误数量的参数调用内置函数,则会得到TypeError
。如果您的应用程序没有理由创建自己的Exception
子类,那么这可能就是您的选择。
答案 2 :(得分:0)
def my_code(*args):
if len(args)>2:
raise TypeError
else:
#code for your function
pass
基本上* args是一个元组,如果你想要一个最大数量的参数,你可以引发一个TypeError