命名關鍵字引數

2022-08-23 17:03:11 字數 1516 閱讀 5337

如果要限制關鍵字引數的名字,就可以用命名關鍵字引數,例如,只接收cityjob作為關鍵字引數。這種方式定義的函式如下:

def person(name, age, *, city, job):

print(name, age, city, job)

和關鍵字引數**kw不同,命名關鍵字引數需要乙個特殊分隔符**後面的引數被視為命名關鍵字引數。

呼叫方式如下:

>>> person('jack', 24, city='beijing', job='engineer')

jack 24 beijing engineer

如果函式定義中已經有了乙個可變引數,後面跟著的命名關鍵字引數就不再需要乙個特殊分隔符*了:

def person(name, age, *args, city, job):

print(name, age, args, city, job)

命名關鍵字引數必須傳入引數名,這和位置引數不同。如果沒有傳入引數名,呼叫將報錯:

>>> person('jack', 24, 'beijing', 'engineer')

traceback (most recent call last):

file "", line 1, in

typeerror: person() takes 2 positional arguments but 4 were given

由於呼叫時缺少引數名cityjob,python直譯器把這4個引數均視為位置引數,但person()函式僅接受2個位置引數。

命名關鍵字引數可以有預設值,從而簡化呼叫:

def person(name, age, *, city='beijing', job):

print(name, age, city, job)

由於命名關鍵字引數city具有預設值,呼叫時,可不傳入city引數:

>>> person('jack', 24, job='engineer')

jack 24 beijing engineer

使用命名關鍵字引數時,要特別注意,如果沒有可變引數,就必須加乙個*作為特殊分隔符。如果缺少*,python直譯器將無法識別位置引數和命名關鍵字引數:

def person(name, age, city, job):

# 缺少 *,city和job被視為位置引數

pass

Python中關鍵字引數和命名關鍵字引數的區別

python中函式的引數有位置引數 預設引數 可變引數 命名關鍵字引數和關鍵字引數,這個順序也是定義函式時的必須順序。本文主要是講講命名關鍵字引數和關鍵字引數的區別 可變引數允許你傳入0個或任意個引數,這些可變引數在函式呼叫時自動組裝為乙個tuple。而關鍵字引數允許你傳入0個或任意個含引數名的引數...

2018 10 09 函式的引數(命名關鍵字引數)

命名關鍵字引數也就是呼叫函式時,只允許傳入指定名稱的引數。比如定義乙個儲存學生資訊的函式,我們需要姓名 性別 年齡 專業等,但不需要女票的生日年齡等資訊。則可以使用命名關鍵字引數的方法。例如 def stu name,age,gender,major pass 此時 後面的即為命名關鍵字,傳參時只能...

非關鍵字引數和關鍵字引數 args kw

這兩個引數的存在是方便在呼叫函式的時候可以靈活的傳參 def count numbers sum 0 for n in numbers sum sum n n return sum count 1,2,3 14 count 1,3,5,7 84如果已經有乙個list或者tuple,要呼叫乙個可變引數...