问题描述
使用 kwargs 从字典中解包元素。解释器抛出意外的关键字参数错误。
def f (x,y,z) : return x + y * z
y = lambda x,z : x+y+z
print(f(**{ 'z' : 4,'x' : 1,'y' : 3 }))
print(y(**{ 'z' : 4,'y' : 3 }))
print(f(**{ 'z' : 4,"xx" : 1,'xx' : 1,'y' : 3 }))
错误消息:
13
8
Traceback (most recent call last):
File "C:/python39/test.py",line 8,in <module>
print(f(**{ 'z' : 4,'y' : 3 }))
TypeError: f() got an unexpected keyword argument 'xx'
解决方法
我猜你在位置参数和键控参数之间混淆了。
解包字典键 xx
与名为 xx
的命名参数之间的字典 python 匹配时,但没有。
如果你想解包位置参数使用 *[4,1,3]
并且它将被映射到 x=4,y=1,z=3