python - 表达式中的 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)
解决方案
您可以将它们包装在另一个函数中,在这种情况下为 lambda:
对于通用版本:
reslt = lambda x: sum(map(lambda f: f(x), (f1, f2)))
其中 (f1, f2, .. fn) 是一个包含要应用的函数的元组。
或者一个简单的硬编码版本:
reslt = lambda x: f1(x) + f2(x)
推荐阅读
- swift - Swift DynamicFetchView fetchlimit
- java - Java Servlet NumberFormatException
- html - 使弹性项目平均增长(并扩展父容器)
- java - 按添加时间排序列表
- windows - 批量打开 & 重启 Explorer.exe & 然后恢复所有窗口
- javascript - 当放大触摸设备时,页面放大而不是地图传单
- azure-iot-edge - 如何允许 Azure IoT 边缘模块执行 http 请求?
- css - 渐变边框有切片,但仍然只显示角落
- firebase - Firebase Cloud Functions 检查值不为空
- php - Laravel - 基于类别显示产品但无法在刀片文件中显示类别名称