天天看點

python 函數的關鍵字參數

python學習筆記,特做記錄,分享給大家,希望對大家有所幫助。

關鍵字參數

可變參數允許你傳入0個或任意個參數,這些可變參數在函數調用時自動組裝為一個tuple。而關鍵字參數允許你傳入0個或任意個含參數名的參數,這些關鍵字參數在函數内部自動組裝為一個dict。請看示例:

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

函數person除了必選參數name和age外,還接受關鍵字參數kw。在調用該函數時,可以隻傳入必選參數:

運作結果如下:

name: Michael age: 30 other: {}

Process finished with exit code 0
           

也可以傳入任意個數的關鍵字參數:

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

運作結果如下:

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

Process finished with exit code 0
           

關鍵字參數有什麼用?它可以擴充函數的功能。

比如,在person函數裡,我們保證能接收到name和age這兩個參數,但是,如果調用者願意提供更多的參數,我們也能收到。

試想你正在做一個使用者注冊的功能,除了使用者名和年齡是必填項外,其他都是可選項,利用關鍵字參數來定義這個函數就能滿足注冊的需求。

和可變參數類似,也可以先組裝出一個dict,然後,把該dict轉換為關鍵字參數傳進去:

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

當然,上面複雜的調用可以用簡化的寫法:

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

兩種寫法的運作結果是一樣的,但是明顯下面的方法友善省事。

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

整理出 45 本電子版書籍

歡迎關注公衆号網羅開發,回複關鍵字python可領取python測試demo和學習資源,demo持續更新中,大家一起學python,網羅天下方法,友善你我開發。

希望可以幫助大家,如有問題可加QQ技術交流群: 668562416

如果哪裡有什麼不對或者不足的地方,還望讀者多多提意見或建議

如需轉載請聯系我,經過授權方可轉載,謝謝

歡迎關注公衆号「網羅開發」

python 函數的關鍵字參數