我想在python中建立函数的总和。但是,我不知道预付款的长度。所有功能都是相似的类型,即具有一个输入和相同的输出类型。对于两个这样的事情会起作用

In [180]: def H(f, g):
     ...:     def _h(x):
     ...:         return f(x) + g(x)
     ...:     return _h


但是,我想要某种通用的东西,因为我可以编写H(*args),并且它向我返回args中所有函数的总和(也仅适用于一个函数)。

我是否正确,这是构建函数总和的唯一方法?我不能为两个函数编写类似h = f+g的内容吗?

最佳答案

编写可扩展的内容可能更容易。并且您应该使用内置函数sum进行实际求和。这将返回一个generator,将每个函数应用于输入x:

def map_funcs(x, *funcs):
    return (f(x) for f in funcs)

funcs = lambda x: x + 1, lambda x: x**2
x = 10
print(sum(map_funcs(x, *funcs)))


如果需要,还可以使其成为包装器,该包装器返回可调用的内容,类似于您已经拥有的内容:

def map_funcs(*funcs):
    def wrapper(x):
        return (f(x) for f in funcs)
    return wrapper

funcs = lambda x: x + 1, lambda x: x**2
x = 10
print(sum(map_funcs(*funcs)(x)))
# 111

10-06 14:26