Python f(a, *b) 的参数匹配
Python argument matching for f(a, *b)
def f(a,*b):
print(a,b)
对于上面定义的函数 f,如果我调用 f(1, *(2,3))
它会按预期打印 1, (2,3)。
但是调用 f(a=1, *(2,3))
会导致错误:
类型错误:f() 为参数 'a'
获取了多个值
任何位置参数也可以作为显式关键字参数提供。
f(a=1, *(2,3))
应该只有一种解释,没有歧义。
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)
那么是否考虑 a=1 or a=2
是有歧义的,因为 2 是第一个位置参数而 a=1
是显式关键字参数。
def f(a,*b):
print(a,b)
对于上面定义的函数 f,如果我调用 f(1, *(2,3))
它会按预期打印 1, (2,3)。
但是调用 f(a=1, *(2,3))
会导致错误:
类型错误:f() 为参数 'a'
任何位置参数也可以作为显式关键字参数提供。
f(a=1, *(2,3))
应该只有一种解释,没有歧义。
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)
那么是否考虑 a=1 or a=2
是有歧义的,因为 2 是第一个位置参数而 a=1
是显式关键字参数。