假设我想定义一个接受函数作为参数的元函数并返回一个新的修改后的函数。像对函数起作用并返回函数的函数
metaf(f) -> f**2
所以,无论f
会导致,metaf
东西会导致与答案的两个电源(如果结果不能被提升到2的幂,就这样吧。引发错误)。
目前我发现做到这一点的方式,需要在metaf
定义明确提及的f
的说法,即定义
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
你想实现一个装饰器吗? – cdarke