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'
使用*(23,)
,您将按照已定义的位置参数将元组(23,)
中的值解压缩为位置参数,即3
的a
和7
的b
,因此[将C0]分配给参数23
,这就是c
起作用的原因,但是在fun(3, 7, d=10, *(23,))
中,您还将fun(3, 7, c=10, *(23,))
的值10
分配为关键字参数,因此,与[[ C0]不能同时分配c
和c
。