1. 程式人生 > 程式設計 >Python關鍵字及可變引數*args,**kw原理解析

Python關鍵字及可變引數*args,**kw原理解析

可變引數

顧名思義,函式的可變引數是傳入的引數可以變化的,1個,2個到任意個。當然可以將這些 引數封裝成一個 list 或者 tuple 傳入,但不夠 pythonic。使用可變引數可以很好解決該問題,注意可變引數在函式定義不能出現在特定引數和預設引數前面,因為可變引數會吞噬掉這些引數。

def report(name,*grades):
  total_grade = 0
  for grade in grades:
    total_grade += grade
  print(name,'total grade is ',total_grade)

定義了一個函式,傳入一個引數為 name,後面的引數*grades 使用了 * 修飾,表明該引數是一個可變引數,這是一個可迭代的物件。該函式輸入姓名和各科的成績,輸出姓名和總共成績。所以可以這樣呼叫函式 report('Mike',8,9),輸出的結果為 Mike total grade is 17,也可以這樣呼叫 report('Mike',9,10),輸出的結果為 Mike total grade is 27

關鍵字引數

關鍵字引數可以傳入0個或者任意個含引數名的引數,這些引數名在函式定義中並沒有出現,這些引數在函式內部自動封裝成一個字典(dict).

def portrait(name,**kw):
  print('name is',name)
  for k,v in kw.items():
    print(k,v)

定義了一個函式,傳入一個引數 name,和關鍵字引數 kw,使用了 ** 修飾。表明該引數是關鍵字引數,通常來講關鍵字引數是放在函式引數列表的最後。如果呼叫引數 portrait('Mike',age=24,country='China',education='bachelor') 輸出:

name is Mike
age 24
country China
education bachelor

通過可變引數和關鍵字引數,任何函式都可以用 universal_func(*args,**kw) 表達。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。