【发布时间】:2020-03-16 14:32:34
【问题描述】:
def fun(a, b, c, d):
print('a:', a, 'b:', b, 'c:', c, 'd:', d)
为什么这个有效
fun(3, 7, d=10, *(23,))
并打印出来:
a: 3 b: 7 c: 23 d: 10
此时
fun(3, 7, c=10, *(23,))
没有
Traceback (most recent call last):
File "/home/lookash/PycharmProjects/PythonLearning/learning.py", line 10, in <module>
fun(3, 7, c=10, *(23,))
TypeError: fun() got multiple values for argument 'c'
【问题讨论】:
-
我不知道引发错误的确切原因,但你不应该在关键字参数之后有可变参数。通常会引发错误,但元组解包似乎会引发与正常
SyntaxError: positional argument follows keyword argument不同的错误。 -
@Error-SyntacticalRemorse。我认为你没有抓住重点。 OP 发现了一种情况,您实际上可以在关键字之后放置一个位置,并且它可以工作。
-
@MadPhysicist 我明白了。但我更多地只是声明不应该在关键字参数之后进行元组解包。因此,我将其作为评论而不是答案。
-
很棒的问题。从来不知道这是一件事。
标签: python unpack argument-unpacking