關鍵字參數

關鍵字參數容許你傳入0個或任意多個含參數名的參數,這些關鍵字參數在函數內部自動組裝爲一個dict
對於關鍵字參數,函數的調用者能夠傳入任意不受限制的關鍵字參數,以擴展函數的功能
但至於到底傳入了哪些關鍵字參數,就須要在函數內部經過kw檢查

定義關鍵字參數函數 函數

def person(name, age, **kw): #函數person除了必選參數name和age外,還接受關鍵字參數kw
  print('name:', name, 'age:', age, 'other:', kw) person('Michael', 30) #輸出:name: Michael age: 30 other: {},調用該函數時,可只傳入必選參數
person('Bob', 35, city='Beijing') #輸出:name: Bob age: 35 other: {'city': 'Beijing'},調用該函數時,也可傳入任意個數的關鍵字參數

 

和可變參數相似,也可先組裝出一個dict後,再把該dict轉換爲關鍵字參數傳進去spa

extra = {'city': 'Beijing', 'job': 'Engineer'} person('Jack', 24, city=extra['city'], job=extra['job']) #輸出:name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
person('Jack', 24, **extra)  #輸出:name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'},是上例的簡寫形式                  # **extra表示把extra這個dict的全部key-value用關鍵字參數傳入到函數的**kw參數,kw將得到一個dict                  # 注意kw得到的dict是extra的一份拷貝,對kw的改動不會影響到函數外的extra

 

調用者可傳入不受限制的關鍵字參數code

def person(name, age, **kw):   if 'city' in kw: #函數內能夠對關鍵字參數進行檢查     # 有city參數
    pass
  if 'job' in kw:     # 有job參數
    pass
print('name:', name, 'age:', age, 'other:', kw) person('Jack', 24, city='Beijing', addr='Chaoyang', zipcode=123456) #關鍵字參數是任意的
相關文章
相關標籤/搜索