def f(a,*b): print(a,b)
f(1, *(2,3)) 它按预期打印1,(2,3)。
f(1, *(2,3))
f(a=1, *(2,3)) 导致错误: TypeError:f()为参数“a”获取了多个值
f(a=1, *(2,3))
任何位置参数也可以作为显式关键字参数提供。 这个问题应该只有一种解释 f(a=1,*(2,3)) 没有歧义。
f(a=1,*(2,3))
def f(a,*b): print(a,b) f(1,*(2,3)) f(1,2,3)
考虑上面的例子,两者都将以相同的方式调用相同的函数 如果指定a=1
f(a=1,2,3) #or in other syntax f(2,3,a=1)
那么,是否考虑这一点就显得模棱两可了 a=1 or a=2 a=1
a=1 or a=2
a=1