匹配f(a,* b)的Python参数

时间:2018-09-03 05:25:28

标签: python argument-matching

def f(a,*b):
    print(a,b)

对于上面定义的函数f,如果我调用f(1, *(2,3)),它将按预期输出1,(2,3)。

但是调用f(a=1, *(2,3))会导致错误:      TypeError:f()为参数'a'获得了多个值

任何位置参数也可以作为显式关键字参数提供。 对f(a=1, *(2,3))的解释应该唯一,没有歧义。

1 个答案:

答案 0 :(得分:1)

def f(a,*b):
    print(a,b)
f(1,*(2,3))
f(1,2,3)

考虑上面的示例,两者将以相同的方式调用相同的函数 现在,如果您指定= 1

f(a=1,2,3)
#or in other syntax
f(2,3,a=1)

然后,由于第2个位置参数是a=1 or a=2是显式关键字参数,因此是否考虑a=1具有不确定性。