代码之家  ›  专栏  ›  技术社区  ›  Royalblue

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

  •  2
  • Royalblue  · 技术社区  · 7 年前
    def f(a,*b):
        print(a,b)
    

    f(1, *(2,3)) 它按预期打印1,(2,3)。

    f(a=1, *(2,3)) 导致错误: TypeError:f()为参数“a”获取了多个值

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

    1 回复  |  直到 7 年前
        1
  •  1
  •   Albin Paul    7 年前
    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

    推荐文章