位置參數、默認參數、可變參數、命名關鍵字參數、關鍵字參數
組合使用時,參數的定義需按照上述方向依次定義。
可變參數實際接收的是一個tuple,關鍵字參數實際接收的是一個dict。
用*定義可變參數,用**定義關鍵字參數。
命名關鍵字參數需要用分隔符 * 隔開,*後面的參數是命名關鍵字參數。若之前定義了可變參數,則不需要分隔符 *
Python的函數具有非常靈活的參數形態,既可以實現簡單的調用,又可以傳入非常複雜的參數。
默認參數一定要用不可變對象,如果是可變對象,程序運行時會有邏輯錯誤!
要注意定義可變參數和關鍵字參數的語法:
*args
是可變參數,args接收的是一個tuple;
**kw
是關鍵字參數,kw接收的是一個dict。
以及調用函數時如何傳入可變參數和關鍵字參數的語法:
可變參數既可以直接傳入:func(1, 2, 3)
,又可以先組裝list或tuple,再通過*args
傳入:func(*(1,
2, 3))
;
關鍵字參數既可以直接傳入:func(a=1, b=2)
,又可以先組裝dict,再通過**kw
傳入:func(**{'a':
1, 'b': 2})
。
使用*args
和**kw
是Python的習慣寫法,當然也可以用其他參數名,但最好使用習慣用法。
命名的關鍵字參數是爲了限制調用者可以傳入的參數名,同時可以提供默認值。
定義命名的關鍵字參數在沒有可變參數的情況下不要忘了寫分隔符*
,否則定義的將是位置參數。