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


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是一个明确的关键字参数。

相关内容

  • 没有找到相关文章

最新更新