在函數定義中,在元組中收集不匹配的位置參數。
>>>def f(*args): PRint(args)
...
當這個函數調用時,python將所有位置的相關參數收集到一個新的元祖中,并將這個元組賦值給變量args。(可進行索引或在for循環中步進)
>>>f()
()
>>>f(1)
(1,)
>>>f(1, 2, 3, 4)
(1, 2, 3, 4)
**特性類似,但是它只對關鍵字參數有效。將這些關鍵字參數傳遞給新的字典。
>>>def f(**args): print((args)
...
>>>f()
{}
>>>f(a = 1, b = 2)
{'a': 1, 'b': 2}
另例:
>>>def f(a, *pargs, **kargs): print(a, pargs, kargs)
...
>>>f(1, 2, 3, x = 1, y = 2)
1 (2, 3) {'y': 2, 'x': 1}
調用時使用*語法,解包參數集合。
>>>def func(a, b, c, d): print(a, b, c, d)
...
>>>args = (1, 2)
>>>args += (3, 4)
>>>func(*args)
1 2 3 4
同樣,**會以鍵值對的形式解包一個字典。
>>>args = {'a': 1, 'b': 2, 'c': 3}
>>>args['d'] = 4
>>>func(**args)
1 2 3 4
*/**的語法:在頭部,它意味著收集任意數量的參數,而在調用是,它解包任意數量的參數。
摘自《python學習手冊》
新聞熱點
疑難解答