除了傳統的位置匹配與預設引數外,python還提供了關鍵字匹配可變引數匹配方式。
位置匹配與預設引數匹配可以緩和使用,但順序有限制。
關鍵字匹配通過引數名匹配,可以改變匹配順序。
可變引數匹配適於引數不確定的情況
幾點說明:
位置匹配從左至右;
函式頭部中*引數將傳入的引數收集到元組,對應於呼叫時多個位置引數,**引數將傳入的引數收集到字典,對應於呼叫時多個關鍵字引數
可變引數在函式頭部使用時,表明函式可以接收任意多的引數(基於位置或關鍵字);
可變引數在函式呼叫時,表明分解引數集合,傳遞任意多的引數;
位置引數,關鍵字引數,*引數,**引數可以混用,但在函式頭部時,有順序要求:
從左只有依次為,位置引數,預設引數,*引數,**引數;
*引數,**引數在函式頭部,呼叫時可以混用,但每種只可以出現一次
示例:>>>def f(c, a=1, *b, **d):
print a, b, c, d
>>>f('i am "c"', 100, *('hello', 'world'), b=2, **) # 分為兩步,先分解,再合併,呼叫中**引數分解時相當於形成關鍵字引數,
100 ('hello', 'world') i am "c" # *引數相當於普通引數
>>>def f2(a, b, c, d, e):
print a, b, c, d, e
>>>f2(1, e = 5, *(2,), **)
1 2 3 4 5
>>>f3(1, ('a', 'b', ))
1 (('a', 'b'),)
>>>f3(1, ('a', 'b', 'c'), 'alphabeta')
1 (('a', 'b', 'c'), 'alphabeta')
>>>def f4(*args):print args
>>>args = (1, 2, 3, 4)
>>>f4(args) # 只有乙個元組引數,合併後作為函式收集引數形成的元組中的乙個元素
((1, 2, 3,4),)
>>>f4(*args) # 先分解元組,再作為函式收集引數形成的元組中的元素
(1, 2, 3, 4)
python 引數匹配規則
不常用到引數匹配的全部功能,容易忘掉,做個筆記總結一下,備查 引數匹配模型 位置引數,關鍵字引數,預設引數,可變引數 字元 開頭,可變引數解包,keyword only 引數 函式呼叫時 func value func name value func sequence 呼叫過程中解包為分開的,單個的...
python中引數 Python中的引數
python中的引數 1.python函式引數有多重形式 test arg1,arg2,args test arg1,arg2,args kwargs 2.其中比較糊弄人的是 args和 kwargs args 變長的佔位引數列表 kwargs 變長的鍵值對引數列表 3.什麼是佔位引數 test a...
python中的引數 python中的引數
一 位置引數 def test x,y print x print y test 1,2 與形參一一對應 結果如下 二 關鍵字引數 def test1 x,y print x print y test1 y 2,x 3 與形參順序無關 結果如下 三 預設引數 def student name,age...