*args, **kwargs另外的用处
用在定义函数形参时,*args表示将下例a,b之外的实参处给它作为一个列表,**kwargs表示将关键字实参处给它作为一个字典
但是在函数内部使用*args,**kwargs时,它们代表将接收到的实参分别拆包
def test(a,b,*args,**kwargs):
print("----------") print(a,b) print(args) print(kwargs) def test2(a,b,*args,**kwargs): print(a,b) print(args) print(kwargs) test(a,b, args, kwargs) #注意这里 [test(a,b,*args,**kwargs)] a = test2(11,22,33,44,55,66,name="xiaoming",age = 18)
输出:
(11, 22)
(33, 44, 55, 66)
{'age': 18, 'name': 'xiaoming'}
---------
(11, 22)
((33, 44, 55, 66), {'age': 18, 'name': 'xiaoming'})
{}
test2中的args,kwargs当作实参传给test,但是它们两个却作为一个元组给了args
可以把test(a,b,args,kwargs)改为test(a,b,*args,**kwargs),这样*会讲实参args拆包成33,,44,55,66传给test,
**可以将实参kwargs拆包成name="xiaoming",age=18传递给test:
(11, 22)
(33, 44, 55, 66)
{'age': 18, 'name': 'xiaoming'}
---------
(11, 22)
(33, 44, 55, 66)
{'age': 18, 'name': 'xiaoming'}

浙公网安备 33010602011771号