为什么下面执行结果是这样的?
>>> def func(*args, **kw):
print(args)
print(kw)
>>> t=(1,2,3)
>>> d={'a':'A','b':'B','c':'C'}
>>> func(*t,*d) #字典解包后变成键的元组?
(1, 2, 3, 'a', 'b', 'c')
{}
>>> func(args=t,kw=d) #字典优先?
()
{'args': (1, 2, 3), 'kw': {'a': 'A', 'b': 'B', 'c': 'C'}}
>>> func(t,kw=**d) #为什么语法错误?
SyntaxError: invalid syntax
>>> func(*t,kw=**d) #为什么语法错误? x2
SyntaxError: invalid syntax
func(*args, **kw)
里面args
的结构是元组,而kw
对应的是字典。当你写的函数里面可能会传入更多的参数时,比如说:
你会得到:
func(*t, *d)
,你猜对了,python 是这样处理的func(args=t, kw=d)
,看完我上面写的你应该能明白了吧~希望对你有帮助!~