1. 程式人生 > >Python---函數---關鍵字參數

Python---函數---關鍵字參數

python 函數 參數 關鍵字參數 dict **kw

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


def person(name, age, **kw):
    print(‘name:‘, name, ‘age:‘, age, ‘other‘, kw)
# 函數person除了必選參數name和age外,還接受關鍵字參數kw。
# 在調用該函數時,可以只傳入必選參數
person("yel", 23)
# 也可以傳入任意個數的關鍵字參數
person(‘Bob‘, 35, city=‘Beijing‘)
person(‘Adam‘, 45, gender=‘M‘, job=‘Engineer‘)

# -----------------------------------------------------------------------------------------------
# 關鍵字參數可以擴展函數的功能
# 比如,在person函數裏,我們保證能接收到name和age這兩個參數,但是,如果調用者願意提供更多的參數,我們也能收到
# 試想正在做一個用戶註冊的功能,除了用戶名和年齡是必填項外,其他都是可選項,利用關鍵字參數來定義這個函數就能滿足註冊的需求
# -----------------------------------------------------------------------------------------------

# 和可變參數類似,也可以先組裝出一個dict,然後,把該dict轉換為關鍵字參數傳進去
extra = {‘city‘: ‘Beijing‘, ‘job‘: ‘Engineer‘}
person(‘Jack‘, 24, city=extra[‘city‘], job=extra[‘job‘])

# 上面復雜的調用可以用簡化的寫法
# **extra表示把extra這個dict的所有key-value用關鍵字參數傳入到函數的**kw參數,kw將獲得一個dict,註意kw獲得的dict是extra的一份拷貝,對kw的改動不會影響到函數外的extra
person(‘Jack‘, 24, **extra)


Python---函數---關鍵字參數