【发布时间】:2020-04-20 17:14:14
【问题描述】:
我正在阅读一份解释拆包的在线文档(*args 和 **kwargs)。遵循两个断言感到困惑,不确定为什么第二个函数无效。任何人都可以帮助我理解原因吗?
def f(x, y, z):
return [x, y, z]
t = (3,)
d = {"z": 4}
assert f(2, *t, **d) == [2, 3, 4]
assert f(x=2, *t, **d) == [2, 3, 4] # TypeError: f() got multiple values for argument 'x'
参考 https://caisbalderas.com/blog/python-function-unpacking-args-and-kwargs/
【问题讨论】:
-
您的第二个断言不会产生
False。你会得到一个TypeError: f() got multiple values for argument 'x'异常。您可以删除assert和== [2, 3, 4]部分,但仍然会出现异常。 -
如果您搜索了该异常,您就会得到副本。不幸的是,您甚至没有在您的问题中包含它,否则我们会尽快为您找到重复的。