Skip to main content
 首页 » 编程设计

python之作用于一个函数并返回一个函数的函数

2025年05月04日13xing901022

假设我想定义一个元函数,它接受一个函数作为参数并返回一个新的修改后的函数。有点像

metaf(f) -> f**2 

因此无论 f 会产生什么结果,metaf 都会得到 2 的幂的答案(如果结果不能提高到 2 的幂,那么它。引发错误)。

目前我发现这样做的方式需要在 metaf 的定义中显式引用 f 的参数,即 define

metaf = lambda f, x : f(x)**2 

然后

mynewf = lambda x : metaf(f, x) 

这行得通,但我想知道它是否适用于输入参数可能有很多变化的复杂参数函数。

所以我想知道您是否可以建议一种不同的方式,尤其是不需要在 metaf 定义中指定参数的方式。

编辑:下面的两个答案都有帮助。仅供引用,根据答案,我也意识到了使用 lambda 表达式定义 metaf 的方法。有点麻烦,但可能仍然值得注意:

metaf = lambda func: lambda *args, **kwargs : func(*args, **kwargs)**2 

请您参考如下方法:

我相信这就是您所追求的:

def metaf(f): 
    def func(*r, **kw): 
        return f(*r, **kw) ** 2 
    return func 

现在让我们定义一些f...

def f(a, b): 
    return a + b 

这里是转换它:

mynewf = metaf(f) 

试一试:

In [148]: f(10, 20) 
Out[148]: 30 
 
In [149]: mynewf(10, b=20) 
Out[149]: 900 

请注意在 mynewf 的使用中使用普通参数和关键字参数。我的工作如您所料。