可变长度的参数
*args的使用方法
*args 用来将参数打包成tuple给函数体调用
可见,1这个参数,被打包成了一个元组
def func(*args): print(args,type(args)) func(1) -->> (1,) <class 'tuple'>
*args是可变参数,x,y已经又1,2传参,*args就得到3,4。
def func(x,y,*args): print(args,type(args)) func(1,2,3,4)
**kwargs的使用方法
**kwargs 打包关键字参数成dict给函数体调用
参数被打包成了一个字典
def func(**kwargs): print(kwargs,type(kwargs)) func(a=2,b=2) -->> {'a': 2, 'b': 2} <class 'dict'>
常见的用法:
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设定默认值。