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

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))没有歧义。


jeck猫
浏览 255回答 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 syntaxf(2,3,a=1)那么它对是否考虑有歧义,a=1 or a=2因为 2 是第一个位置参数并且a=1是一个显式的关键字参数。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python