针对python中的args和 **kwargs拆包和装包的说明
函数定义中的args通常用来接受元组,列表等不定长参数,**kwargs用来接受关键字参数
下面看以下代码
"""python中的装包与拆包"""
def func(*args,**kwargs):
"""函数定义中的*args和**kwargs表示的是装包
*args把数据装在元组中
**kwargs把数据装在字典中,且**kwargs只能接受关键字参数
"""
print("拆包前")
print(args)
#将*args中的元组进行拆包
print("拆包后")
print(*args)
print("装包后的kwargs")
print(kwargs)
n1=(1,2,3,45,6,7)
dic={"name":"jiajia","age":15}
func(*n1,**dic)#函数调用中在参数前面加上*或者是**表示拆包,将**拆成关键字参数
运行结果
拆包前
(1, 2, 3, 45, 6, 7)
拆包后
1 2 3 45 6 7
装包后的kwargs
{'name': 'jiajia', 'age': 15}
①在调用函数是,传入的一组元组或者列表前面加上args或者在字典前面加上**kwargs,表示的是拆包,将agrs拆成位置参数将**kwargs拆成关键字参数,比如,将{‘name’: ‘jiajia’, ‘age’: 15}拆成,name=“jiajia”,age=15传递为函数中的形参
②接着会在将拆包的数据作为实参传递给函数,函数会将位置参数装成一组元组或者列表,将关键字参数装成字典
③在函数中,如果使用了*args,则表示将函数形参中的装成的包继续进行拆包,比如将(1, 2, 3, 45, 6, 7)拆成:1,2,3,45,6,7这样