參數組合
在Python中定義函數,可以用必選參數、默認參數、可變參數、關鍵字參數和命名關鍵字參數,這5種參數都可以組合使用。但是請注意,
參數定義的順序必須是:必選參數、默認參數、可變參數、命名關鍵字參數和關鍵字參數。
可變參數*args(默認名稱),傳入的是一個tuple,且這個tuple是原數據的副本,無論怎么操作也不會對原數據有影響。
關鍵字參數**kw(默認名稱),傳入的是一個dict,且進入函數的是副本。
命名關鍵字參數,如我只接收city和job作為我的關鍵字參數:
圖1 關鍵字參數函數定義-1
和關鍵字參數**kw不同,命名關鍵字參數需要一個特殊分隔符*,*后面的參數被視為命名關鍵字參數。
調用方式如下:
圖2 關鍵字參數函數調用-1
如果函數定義中已經有了一個可變參數,后面跟著的命名關鍵字參數就不再需要一個特殊分隔符*了:
圖3 關鍵字參數函數定義-2
命名關鍵字參數必須傳入參數名,這和位置參數不同。如果沒有傳入參數名,調用將報錯:
命名關鍵字參數可以有缺省值,從而簡化調用:
def person(name, age, *, city='Beijing', job):
? ? print(name, age, city, job)
由于命名關鍵字參數city具有默認值,調用時,可不傳入city參數:
>>>person('Jack',24, job='Engineer')
>>>Jack 24 Beijing Engineer
對于任意函數,都可以通過類似func(*args, **kw)的形式調用它,無論它的參數是如何定義的.