參數(shù)組合
在Python中定義函數(shù),可以用必選參數(shù)、默認參數(shù)、可變參數(shù)、關(guān)鍵字參數(shù)和命名關(guān)鍵字參數(shù),這5種參數(shù)都可以組合使用。但是請注意,
參數(shù)定義的順序必須是:必選參數(shù)、默認參數(shù)、可變參數(shù)、命名關(guān)鍵字參數(shù)和關(guān)鍵字參數(shù)。
可變參數(shù)*args(默認名稱),傳入的是一個tuple,且這個tuple是原數(shù)據(jù)的副本,無論怎么操作也不會對原數(shù)據(jù)有影響。
關(guān)鍵字參數(shù)**kw(默認名稱),傳入的是一個dict,且進入函數(shù)的是副本。
命名關(guān)鍵字參數(shù),如我只接收city和job作為我的關(guān)鍵字參數(shù):

和關(guān)鍵字參數(shù)**kw不同,命名關(guān)鍵字參數(shù)需要一個特殊分隔符*,*后面的參數(shù)被視為命名關(guān)鍵字參數(shù)。
調(diào)用方式如下:

如果函數(shù)定義中已經(jīng)有了一個可變參數(shù),后面跟著的命名關(guān)鍵字參數(shù)就不再需要一個特殊分隔符*了:

命名關(guān)鍵字參數(shù)必須傳入?yún)?shù)名,這和位置參數(shù)不同。如果沒有傳入?yún)?shù)名,調(diào)用將報錯:
命名關(guān)鍵字參數(shù)可以有缺省值,從而簡化調(diào)用:
def person(name, age, *, city='Beijing', job):
? ? print(name, age, city, job)
由于命名關(guān)鍵字參數(shù)city具有默認值,調(diào)用時,可不傳入city參數(shù):
>>>person('Jack',24, job='Engineer')
>>>Jack 24 Beijing Engineer
對于任意函數(shù),都可以通過類似func(*args, **kw)的形式調(diào)用它,無論它的參數(shù)是如何定義的.