我在python中寻找一个高阶函数,它接受一个函数作为参数和一个相应参数列表,并在参数列表中调用该函数。类似的东西:
def exec(func,paramlist):
return CALL(func,paramlist)
参数列表长度未确定,因为它与传入的每个func一致.CALL应该能够提取列表中的元素并将每个参数放在右侧插槽中并进行函数调用。
作为参考,在Q language中有这个“apply”函数来处理泛型函数调用:
f1: {x}
f2: {x+y}
execFunction: {[fun;param] .[fun;param] }
execFunction[f1;enlist 1] // result is 1
execFunction[f2;(1 2)] // result is 3
答案 0 :(得分:4)
如果func
需要多个参数且paramlist
是参数列表,那么就像这样简单:
func(*paramlist)
答案 1 :(得分:2)
Python曾经有一个apply
函数,但它在Python 3中被删除了,因为使用*运算符将列表打包成单个参数非常容易。事实上,apply
函数可以像这样编写:
def apply(func, paramlist)
return func(*paramlist)
当然,这是微不足道的,你不会费心为它写一个函数;你只需要在任何需要的地方写func(*paramlist)
。