在定义函数时如果参数个数不固定的时候,我们希望能够使用一个特殊的字符串表示可变长度的参数。那么你或许会碰到两种可变长度的参数,即*args和**kwargs。
*args和**kwargs都是不定长参数收集机制,这里我们总结一下*args和**kwargs调用的区别和注意事项。
区别1:
*args 将传入函数的参数打包成元组(tuple)给函数体调用
**kwargs 将传入函数的参数打包成字典(dict)给函数体调用
注意1:
如果函数形参qi没有加前面的*
,那就是一个对象,如果加了*args
,表示可以传入多个实参进去,传入的参数被收集到一个元组args
这个对象中,如果对这个元组对像使用*
操作,表示解开,返回的是元组中的多个对象!!
注意2:
如果同时使用args,*args和**kwargs,必须是args,*args,**kwargs顺序