def foo(a, b, c):
print a+b+c
i = [1,2,3]
有沒有辦法在沒有顯式索引的情況下調用foo(i)? 試圖避免FOO(I [0],I [1],1 [2])是否有更多pythonic的方式來爆炸一個函數的參數列表?
def foo(a, b, c):
print a+b+c
i = [1,2,3]
有沒有辦法在沒有顯式索引的情況下調用foo(i)? 試圖避免FOO(I [0],I [1],1 [2])是否有更多pythonic的方式來爆炸一個函數的參數列表?
是,使用foo(*i)
:
>>> foo(*i)
6
您還可以在函數定義使用*
: def foo(*vargs)
將所有非關鍵字參數到一個名爲vargs
元組。 。 和使用**
,對於如def foo(**kargs)
,將把所有關鍵字參數到名爲kargs
詞典:
>>> def foo(*vargs, **kargs):
print vargs
print kargs
>>> foo(1, 2, 3, a="A", b="B")
(1, 2, 3)
{'a': 'A', 'b': 'B'}
是,Python支持的是:
foo(*i)
參見Unpacking Argument Lists的文檔。適用於任何可迭代的東西。用兩顆星**
它適用於字典和命名參數。
def bar(a, b, c):
return a * b * c
j = {'a': 5, 'b': 3, 'c': 2}
bar(**j)
+1用於放棄遊戲的名稱。其實這有助於谷歌這個東西的任何語言。非常感謝。 –
多次用於函數定義,所以爲什麼不在調用時使用它...感謝您恢復我的Python頭部傢伙。 – rutherford