解包函數參數如果一個函數需要n個參數,并且有另一個函數返回一個包含n個項目的序列(或者我有一個包含n個項目的序列),有沒有辦法“映射”這兩個函數(或者make第一個函數采用n個項目的序列作為輸入和返回結果)我不希望(也許在某些情況下不能)自己編輯函數并更改其參數參數和返回值類型。即)def func1(x, y, z):
return x+y+zdef func2(w):
return [i for i in range(w,w+3)]func1(func2( ... ))在這種情況下不能。
2 回答

暮色呼如
TA貢獻1853條經驗 獲得超9個贊
您正在尋找*args參數語法:
>>> def foo(bar, baz, spam):
... print bar, baz, spam
...
>>> arguments = [1, 2, 3]
>>> foo(*arguments)
1, 2, 3
將參數傳遞給callable時,任何以*asterix開頭的表達式都被解釋為位置參數序列,并擴展為作為被調用對象(函數,方法等)的單獨參數傳遞。
對于你的例子,那將是:
func1(*func2(...))
使用**double asterixes(采用映射)有一個等價的關鍵字,你也可以在函數簽名中使用相同的語法。
添加回答
舉報
0/150
提交
取消