首页 > 解决方案 > 表达式中的 Python 函数 - 推迟评估

问题描述

我知道在 python 中你可以这样做:

def getFunc():
    def func(x):
        return x+4
    return func

f = getFunc()
#8
print(f(4))

下面的部分会导致错误。有没有办法用不同的语法/符号来完成同样的事情?

f1 = getFunc()
f2 = getFunc()

# unsupported operand type(s) for +: 'function' and 'function'
rslt = f1 + f2

# Evaluate expression by passing in '1' to all functions
# Ideally Outputs f1(1) + f2(1) = 10
rslt(1)

标签: pythonpython-3.xfunction

解决方案


您可以将它们包装在另一个函数中,在这种情况下为 lambda:

对于通用版本:

reslt = lambda x: sum(map(lambda f: f(x), (f1, f2)))

其中 (f1, f2, .. fn) 是一个包含要应用的函数的元组。

或者一个简单的硬编码版本:

reslt = lambda x: f1(x) + f2(x)

推荐阅读