def func(x,y,**kwargs): print(x,y,kwargs)
func(x=2,y=1,3,4) #這樣傳入?yún)?shù)為錯誤,**需要賦值給一個變量名,然后傳入為字典性形式 func(x=2,y=1,z=3,a=4) #結(jié)果可運(yùn)行得到,溢出參數(shù)為字典形式保存 def zzf(x,y,*z): print(x,y,z) zzf(1,2,3,4,5,6,7) #傳入?yún)?shù),可以把溢出的位置參數(shù)保存成一個元祖的形式 #差別在于位置實參和關(guān)鍵字實參 def func(x,y,z) print(x,y,z) func(*[11,22,33]) #可把列表數(shù)據(jù)進(jìn)行打散,分配到每個函數(shù)的位置參數(shù) 形參和實參種都有* def bbc(x,y,*args): print(x,y,args) bbc(1,2,*[3,4,5,6]) 會不分解此數(shù)據(jù),只會把此元祖保存成一個元祖的形式 #總結(jié) 在函數(shù)的形參中使用*,是把位置參數(shù)轉(zhuǎn)變成一個元祖,如果形參使用**,把關(guān)鍵字參數(shù)轉(zhuǎn)變?yōu)樽值湫问?/span> #如果是在實參種使用,需要跟一個可迭代數(shù)據(jù),如果是*則是把參數(shù)直接打散,轉(zhuǎn)化為位置實參,如果是**則需要跟一個字典形式的數(shù)據(jù),可以把字典轉(zhuǎn)化成一個帶關(guān)鍵字的實參
|