【发布时间】:2016-08-05 12:43:15
【问题描述】:
我有:
def f(x, y): return x**2 + y**2
def g(x, y): return x**3 + y**3
def h(x, y): return x**4 + y**4
我想做一个新功能:
def J(x, y):
return f(x,y)*g(x,y)*h(x,y)
但是,我无法找到以编程方式执行此操作的方法。 也就是说,采取如下方式:
myFunctions = [f,g,h]
并返回一个新函数J,它返回f、g和h的乘积。
另一个问题是,虽然 f、g 和 h 将始终具有相同数量的参数,但该数量可能会改变。也就是说,他们都可以有五个参数而不是两个。
期望的行为:
print(J(2, 2)) # 4096
编辑
myFunctions 中的函数数量也是任意的。
我认为这是在我的问题中暗示的,但是在重读它时,我发现我根本没有说清楚。我很抱歉。
【问题讨论】:
-
您有什么理由不将
J定义为def J(*args, **kwargs)?您是否出于任何其他原因需要这些参数? -
您是否创建函数列表?如果是这样,您可以使用
*args将可选数量的位置参数传递给您的函数。 -
您可以在 Python 中使用
functools.reduce、operator.mul、functools.partial和其他功能工具来执行此操作。正如其他 cmets 所指出的,您可以轻松定义任意位置和关键字参数。 -
@VincentSavard 不是名字本身,不。
标签: python python-3.x functional-programming