【问题标题】:python high order function: generic functions calls with parameter listpython高阶函数:带有参数列表的泛型函数调用
【发布时间】:2017-01-10 04:17:11
【问题描述】:

我在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

【问题讨论】:

    标签: python functional-programming callable


    【解决方案1】:

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

    func(*paramlist)
    

    【讨论】:

      【解决方案2】:

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

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

      当然,这很简单,您不会费心为它编写函数;您只需在需要的地方写上func(*paramlist)。

      【讨论】:

        猜你喜欢
        • 2020-08-30
        • 1970-01-01
        • 2020-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-04
        相关资源
        最近更新 更多