def func(x,y,**kwargs): print(x,y,kwargs)
func(x=2,y=1,3,4) #这样传入参数为错误,**需要赋值给一个变量名,然后传入为字典性形式 func(x=2,y=1,z=3,a=4) #结果可运行得到,溢出参数为字典形式保存 def zzf(x,y,*z): print(x,y,z) zzf(1,2,3,4,5,6,7) #传入参数,可以把溢出的位置参数保存成一个元祖的形式 #差别在于位置实参和关键字实参 def func(x,y,z) print(x,y,z) func(*[11,22,33]) #可把列表数据进行打散,分配到每个函数的位置参数 形参和实参种都有* def bbc(x,y,*args): print(x,y,args) bbc(1,2,*[3,4,5,6]) 会不分解此数据,只会把此元祖保存成一个元祖的形式 #总结 在函数的形参中使用*,是把位置参数转变成一个元祖,如果形参使用**,把关键字参数转变为字典形式 #如果是在实参种使用,需要跟一个可迭代数据,如果是*则是把参数直接打散,转化为位置实参,如果是**则需要跟一个字典形式的数据,可以把字典转化成一个带关键字的实参
|