若是要限制關鍵字參數的名字,可用命名關鍵字參數
定義命名關鍵字參數函數函數
def person(name, age, *, city, job): #和關鍵字參數**kw不一樣,命名關鍵字參數須要一個特殊分隔符*,*後面的參數被視爲命名關鍵字參數 print(name, age, city, job) person('Jack', 24, city='Beijing', job='Engineer') #命名關鍵字參數必須傳入參數名,這和位置參數不一樣。若是沒有傳入參數名,調用將報錯
若是函數定義中已有一個可變參數,則後面跟着的命名關鍵字參數就再也不須要一個特殊分隔符*了spa
def person(name, age, *args, city, job): print(name, age, args, city, job) person('Jack', 24, city='Beijing', job='Engineer') #輸出:Jack 24 () Beijing,Engineer
命名關鍵字參數可經過設置默認值來簡化調用code
def person(name, age, *, city='Beijing', job): print(name, age, city, job) person('Jack', 24, job='Engineer') #因爲命名關鍵字參數city具備默認值,調用時,可不傳入city參數
使用命名關鍵字參數時,若是沒有可變參數,就必須加一個*做爲特殊分隔符,若是有可變參數,則可變參數可代替特殊分隔符*
總之位置參數和命名關鍵字參數之間,必須有一個東西用以區別
若是缺乏*,Python解釋器將沒法識別位置參數和命名關鍵字參數blog
def person(name, age, city, job): # 缺乏 *,city和job被視爲位置參數 pass person('Jack', 24, city='Beijing', job='Engineer')