python 函數(shù)的關(guān)鍵字參數(shù)

python學(xué)習(xí)筆記,特做記錄,分享給大家,希望對大家有所幫助。

關(guān)鍵字參數(shù)

可變參數(shù)允許你傳入0個或任意個參數(shù),這些可變參數(shù)在函數(shù)調(diào)用時自動組裝為一個tuple。而關(guān)鍵字參數(shù)允許你傳入0個或任意個含參數(shù)名的參數(shù),這些關(guān)鍵字參數(shù)在函數(shù)內(nèi)部自動組裝為一個dict。請看示例:

def person(name, age, **kw):
    print ('name:', name, 'age:', age, 'other:', kw)
person('Michael', 30)

函數(shù)person除了必選參數(shù)name和age外,還接受關(guān)鍵字參數(shù)kw。在調(diào)用該函數(shù)時,可以只傳入必選參數(shù):
運行結(jié)果如下:

name: Michael age: 30 other: {}

Process finished with exit code 0

也可以傳入任意個數(shù)的關(guān)鍵字參數(shù):

person('Evan', 29, city='shanghai')
person('Evan', 28, city='beijing', gender='M')

運行結(jié)果如下:

name: Evan age: 29 other: {'city': 'shanghai'}
name: Evan age: 28 other: {'city': 'beijing', 'gender': 'M'}

Process finished with exit code 0

關(guān)鍵字參數(shù)有什么用?它可以擴展函數(shù)的功能。
比如,在person函數(shù)里,我們保證能接收到name和age這兩個參數(shù),但是,如果調(diào)用者愿意提供更多的參數(shù),我們也能收到。
試想你正在做一個用戶注冊的功能,除了用戶名和年齡是必填項外,其他都是可選項,利用關(guān)鍵字參數(shù)來定義這個函數(shù)就能滿足注冊的需求。

和可變參數(shù)類似,也可以先組裝出一個dict,然后,把該dict轉(zhuǎn)換為關(guān)鍵字參數(shù)傳進去:

extra = {'city': 'beijing', 'gender': 'M'}
person('Jack', 27, city=extra['city'], gender=extra['gender'])

當(dāng)然,上面復(fù)雜的調(diào)用可以用簡化的寫法:

extra = {'city': 'beijing', 'gender': 'M'}
person('Jack', 27, **extra)

兩種寫法的運行結(jié)果是一樣的,但是明顯下面的方法方便省事。

extra表示把extra這個dict的所有key-value用關(guān)鍵字參數(shù)傳入到函數(shù)的kw參數(shù),kw將獲得一個dict,注意kw獲得的dict是extra的一份拷貝,對kw的改動不會影響到函數(shù)外的extra。

歡迎關(guān)注公眾號「網(wǎng)羅開發(fā)」,可領(lǐng)取python測試demo和學(xué)習(xí)資源,大家一起學(xué)python,網(wǎng)羅天下方法,方便你我開發(fā)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容