python 高阶函数:带有参数列表的泛型函数调用

python high order function: generic functions calls with parameter list

我在python中寻找一个高阶函数,它接受一个函数作为参数和相应参数的列表,并调用参数列表中的函数。类似于:

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

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

如果func需要多个参数,而paramlist是一个参数列表,就这么简单:

func(*paramlist)

Python 曾经有一个 apply 函数,但它在 Python 3 中被删除了,因为使用 * 运算符可以很容易地将列表解压缩为单独的参数。实际上 apply 函数可以这样写:

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

这太简单了,当然,你不会费心为它写一个函数;您只需在需要的地方写 func(*paramlist)