Python的不定長引數研究

2021-07-03 09:27:13 字數 1385 閱讀 8899

以乙個*開始的引數,代表乙個任意長的元組:

>>> def mul(*arg):

...     print arg

... 

>>> mul(1,2,3,4,5,6,7,'hello','panfei')

(1, 2, 3, 4, 5, 6, 7, 'hello', 'panfei') #乙個元組

>>>

乙個以**開始的引數,代表乙個字典:

>>> def mul2(**arg):

...     print arg

... 

>>> mul2(a=11,b=444,c=888)

乙個字典

>>>

兩種引數前者可以直接寫實參,後者寫成名=值的形式!

*********************************

下面看看 *args, **kwargs  的配合使用

def foo(*args, **kwargs):

print 'args = ', args

print 'kwargs = ', kwargs

print '---------------------------------------'

if __name__ == '__main__':

foo(1,2,3,4)

foo(a=1,b=2,c=3)

foo(1,2,3,4, a=1,b=2,c=3)

foo('a', 1, none, a=1, b='2', c=3)

輸出結果如下:
args =  (1, 2, 3, 4) 

kwargs =  {} 

--------------------------------------- 

args =  () 

kwargs =   

--------------------------------------- 

args =  (1, 2, 3, 4) 

kwargs =   

--------------------------------------- 

args =  ('a', 1, none) 

kwargs =   

---------------------------------------

可以看到,這兩個是python中的可變引數。*args表示任何多個無名引數,它是乙個tuple;**kwargs表示關鍵字引數,它是乙個dict。並且同時使用*args和**kwargs時,必須*args引數列要在**kwargs前,像foo(a=1, b='2', c=3, a', 1, none, )這樣呼叫的話,會提示語法錯誤「syntaxerror: non-keyword arg after keyword arg」。

Python不定長引數

記錄了python函式的不定長引數,用 來接收不定長的資料。在定義函式時,可以在形參前邊加上乙個 這樣這個形參將會獲取到所有的實參,它將會將所有的實參儲存到乙個元組中 a會接受所有的位置實參,並且會將這些實參統一儲存到乙個元組中 裝包 fn3函式的使用 形參可以接收其他的關鍵字引數,它會將這些引數統...

不定長引數 python

如果向乙個函式傳遞的引數的數量每次都不同,想要讓函式去做每次相加或者其他的事的時候,可以用 變數名 傳遞不定長引數,傳進去以後的變數會變成乙個元組def sum a result 0print type a for i in a result i return result result sum 1...

python不定長引數詳解

如果想要乙個函式能不固定接收任意多個引數,可以使用不定長引數。python自定義函式中有兩種不定長引數,第一種是 在傳入額外的引數時可以不用指明引數名,直接傳入引數值即可。第二種是 這種型別返回的是字典,傳入時需要指定引數名。加了乙個星號 不定長引數會以元組 tuple 的形式匯入,存放所有未命名的...