默認(rèn)參數(shù):定義函數(shù)的時(shí)候給定變量一個默認(rèn)值?! ef num(age=1):
位置參數(shù):調(diào)用函數(shù)的時(shí)候根據(jù)定義函數(shù)時(shí)的形參位置和實(shí)參位置進(jìn)行引用。
關(guān)鍵字參數(shù):如果定義的函數(shù)中含有關(guān)鍵字參數(shù),調(diào)用函數(shù)時(shí)必須要傳如該關(guān)鍵字對應(yīng)的實(shí)參。
不定長參數(shù):在定義函數(shù)的時(shí)候不確定傳入的參數(shù)的數(shù)量(可能是0個或多個) def num(*args,**args): (不定長參數(shù)的標(biāo)志符號是*和**,args和kwargs只是變量的名字,可以改為任意的變量如(*num,**kwnum))
*+變量名1,可以接受被其他參數(shù)接受后剩下的任意的形參(不包括賦值語句),放進(jìn)一個元組里,這個元組的名字是前面的變量名1(所以位置參數(shù)必須在此參數(shù)之前)
**+變量名2,可以接受被其他參數(shù)接受后剩下的任意賦值語句,放進(jìn)一個字典中,這個字典的名字是前面的變量名2(所以關(guān)鍵字參數(shù)和默認(rèn)參數(shù)必須在此參數(shù)之前,*+變量名也要在此參數(shù)之前)
測試上面的總結(jié)是否正確
1 2 3 | def num_0(a,b,c, * args,city = 'beijing' ,name, * * kwnum): print (a,b,c,name,city,args,kwnum) # 輸出的時(shí)候直接用*或者** 的變量名 num_0( 1 , 2 , 3 , 4 , 5 , 6 , 7 ,city = 'hangzhou' ,name = 'jack' ,age = 18 ,country = 'haidian' ) |
1 2 3 4 | #結(jié)果<br>D:\pycharm_project\裝飾器\venv\Scripts\python.exe D:/pycharm_project/裝飾器/venv/text.py 1 2 3 jack hangzhou ( 4 , 5 , 6 , 7 ) { 'age' : 18 , 'country' : 'haidian' } Process finished with exit code 0 |
最后總結(jié)
調(diào)用函數(shù)傳遞實(shí)參的時(shí)候,先傳變量/定量,再傳賦值語句(num_0(1,2,3,4,5,6,7,city='hangzhou',name='jack',age=18,country='haidian'))
定義函數(shù)的時(shí)候直接按此順序定義形參(def num_0(a,b,c,*args,city='beijing',name,**kwnum):)(位置參數(shù),*變量名,默認(rèn)參數(shù),關(guān)鍵字參數(shù),**變量名)
接下來討論一下不定長參數(shù)中的 * 和 ** 還有什么用處
1,當(dāng)在函數(shù)的形參中使用時(shí)(和上面的例子相同)
*t:將所有的其他位置的實(shí)參(變量/定量)獲取,并將它們打包到元祖中,并賦值給此形參
**t:將所有的其他位置的實(shí)參(賦值語句)獲取,并將它們打包到字典中,并賦值給此參數(shù)
2,當(dāng)在調(diào)用函數(shù)的時(shí)候使用(實(shí)參中)
*tuple_a:將此元祖的元素,當(dāng)做函數(shù)調(diào)用的位置參數(shù)
1,2
**dict_a:將字典中的鍵值對,當(dāng)做函數(shù)調(diào)用的關(guān)鍵字參數(shù)
1,2
3,在匹配和for循環(huán)中
*x意味著‘匹配多余的元素’,x是一個列表
4,可以用于合并字典
聯(lián)系客服