如果要限制關鍵字參數的名字,就可以用命名關鍵字參數,例如,只接收city和job作為關鍵字參數。
這種方式定義的函數如下:
def person(name, age, *, city, job)
print(name, age, city, job)
# 調用
person('city', 22, city='Beijing', job='IT')
輸出:
yjc 22 Beijing IT
和關鍵字參數**kw
不同,命名關鍵字參數需要一個特殊的分隔符*
,*
后面的參數被視為命名關鍵字參數
。
命名關鍵字參數必須傳入參數名,這和位置參數不同。如果沒有傳入參數名,調用將報錯。如果調用時
缺少參數名city和job,Python解釋器把這4個參數均視為位置參數,但person()
函數僅接受2個位置參數。
如果函數定義中已經有了一個可變參數,后面跟着的命名關鍵字參數就不再需要一個特殊分隔
符*
了:
def person(name, age, *args, city, job):
print(name, age, args, city, job)
命名關鍵字參數可以有缺省值,從而簡化調用:
def person(name, age, *, city='Beijing', job):
print(name, age, city, job)
由於命名關鍵字參數city具有默認值,調用時,可不傳入city參數。