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

对于如上定义的函数 f,如果我调用f(1, *(2,3))它会按预期打印 1, (2,3)。

但是调用f(a=1, *(2,3))会导致错误:TypeError: f() got multiple values for argument 'a'

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

4

1 回答 1

1
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因为 2 是第一个位置参数并且a=1是显式关键字参数。

于 2018-09-03T05:36:39.037 回答