Python - 错误的参数数量异常?

时间:2018-03-15 21:20:56

标签: python python-3.x exception error-handling try-catch

所以我有一个像:

这样的功能
def my_code(arg1, *args):
    ....

我希望这个函数只能使用2个或3个参数(这意味着* args只能是1或2个参数)。如果参数的数量错误,如何抛出错误消息?如果我使用try / exception,是否有特定的异常类型?

3 个答案:

答案 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