關鍵字參數


關鍵字參數允許你傳入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轉換為關鍵字參數傳進去

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

 

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

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) #關鍵字參數是任意的

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM