为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

jeck猫 2021-06-07 16:12:05
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))没有歧义。
查看完整描述

1 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

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


查看完整回答
反对 回复 2021-06-09
  • 1 回答
  • 0 关注
  • 222 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号