參數(shù)類別
實參:實際上的參數(shù)
形參:形式上的參數(shù)
如上圖,實際輸入的參數(shù)為實參,在函數(shù)中占位置的參數(shù)為形參。
實參類型
1、位置實參
定義:調(diào)用的時候,需要根據(jù)位置傳遞實際參數(shù)
如圖,Lion / Dog占了兩個位置,期望是傳遞實參建議按照這個順序,不然,即時能夠接受,也不能正確的處理。(Lion的名字跟Dog的名字,因為傳遞錯誤,將導(dǎo)致不能正確識別)
2、關(guān)鍵字實參
定義:調(diào)用的時候,需要指定形參名稱
如圖,在調(diào)用的時候直接賦值,這種傳遞方式一目了然。
3、默認值實參
定義:在函數(shù)中,直接賦值給參數(shù)
如圖,直接在函數(shù)定義一個默認值,在調(diào)用的時候,可以不傳遞,當(dāng)然也可以傳遞。
形參類型
形參類型分為非關(guān)鍵字形參*args, 關(guān)鍵字形參**kwargs,先上代碼體驗一下,:
def func(*args, **kwargs):
print("-------------------------")
print('args is {}'.format(args))
print('kwarg is {}'.format(kwargs))
try:
print('firstArgs is {}'.format(args[0]))
print('firstKwarg is {}'.format(kwargs["a"]))
except:
pass
if __name__ == "__main__":
func(1, 2) # 元組
func(a=1, b=2, c=3, d=4) # 字典
func(1, 2, a=1, b=2) # 元組+字典
如上,我們了解了非關(guān)鍵字形參*args, 關(guān)鍵字形參**kwargs的用法。
非關(guān)鍵字形參:用于接收不含關(guān)鍵字的輸入數(shù)據(jù)(如:1,2,3),會以元組的形式進入函數(shù);
非關(guān)鍵字形參:用于接收含有關(guān)鍵字的輸入數(shù)據(jù)(如:key=1中的key),會以字典的形式進入函數(shù);
注意事項:
1、*args, **kwargs可單獨存在
2、*args, **kwargs同時存在時,函數(shù)定義的形參,*args形參必須在前
3、*args, **kwargs同時存在時,傳遞實參的順序,*args實參必須在前
4、取值方式:
*args可通過列表取值方式,如:args[0]
**kwargs可通過字典取值方式,如:kwargs[“key”]
5、參數(shù)擴展:可以跟普通形參一起使用,如:func(a,b,c=“name”,*args, **kwargs)