2017-01-10 78 views
2

我要尋找在python高階函數,它在功能參數和相應的參數列表調用,並調用參數列表的功能。喜歡的東西:蟒蛇高階函數:通用功能與參數列表

def exec(func,paramlist): 
    return CALL(func,paramlist) 

的paramlist長度是不確定的,因爲它會與每個FUNC傳入的CALL應該能夠提取列表中的元素,並把每個參數右側插槽,使函數調用。 。

作爲參考,在Q language存在一個處理泛型函數這個「應用」功能調用:

f1: {x} 
f2: {x+y} 
execFunction: {[fun;param] .[fun;param] } 
execFunction[f1;enlist 1] // result is 1 
execFunction[f2;(1 2)] // result is 3 

回答

4

如果func預計多個參數和paramlist是一個參數列表,是如此簡單:

func(*paramlist) 
2

Python曾經有一個apply函數,但它在Python 3中被刪除,因爲它很容易使用*運算符將列表解壓到單個參數中。其實一個apply函數可以寫成像這樣:

def apply(func, paramlist) 
    return func(*paramlist) 

這是那麼微不足道,當然,你也不會刻意去爲它編寫一個函數;你只需在需要的地方寫func(*paramlist)

+0

非常感謝... – iwbabn