可变长度的参数
*args的使用方法
*args 用来将参数打包成tuple给函数体调用
可见,1这个参数,被打包成了一个元组
1 2 3 4 5 6 | def func( * args): print (args, type (args)) func( 1 ) - - >> ( 1 ,) < class 'tuple' > |
*args是可变参数,x,y已经又1,2传参,*args就得到3,4。
1 2 3 4 | def func(x,y, * args): print (args, type (args)) func( 1 , 2 , 3 , 4 ) |
**kwargs的使用方法
**kwargs 打包关键字参数成dict给函数体调用
参数被打包成了一个字典
1 2 3 4 5 6 | def func( * * kwargs): print (kwargs, type (kwargs)) func(a = 2 ,b = 2 ) - - >> { 'a' : 2 , 'b' : 2 } < class 'dict' > |
常见的用法:
1 2 3 4 5 6 7 8 9 10 | def test(data, * * kwargs): instance = kwargs.pop( 'instance' , False ) context = kwargs.pop( 'context' ,{}) print (data,instance,context) test(data = 'xxx' , instance = True ) - - > xxx True {} #有一个固定参数data #剩下的是选择性传参的kv对,如果没有传这个参数,就使用pop设定默认值。 |