Python 惰性求值器

标签 python caching lazy-evaluation memoization

是否有一种 Pythonic 方式来封装惰性函数调用,从而在第一次使用函数 f() 时,它会调用先前绑定(bind)的函数 g(Z)并在连续调用 f() 时返回一个缓存值?

请注意,内存可能不是一个完美的选择。

我有:

f = g(Z)
if x:
     return 5
elif y:
     return f
elif z:
     return h(f)

代码有效,但我想重组它,以便仅在使用该值时调用 g(Z)。我不想更改 g(...) 的定义,而且 Z 有点大,无法缓存。

编辑:我假设 f 必须是一个函数,但事实可能并非如此。

最佳答案

我有点困惑你是寻求缓存还是惰性求值。对于后者,查看模块 lazy.py by Alberto Bertogli .

关于Python 惰性求值器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5295038/

相关文章:

haskell - 等式推理与喜结连理

python - 十六进制数的按位异或

python - 加密文件中的行

apache-flex - 防止浏览器中的 Flex 应用程序缓存(多个模块)

.net - 内存缓存还是并发字典?

haskell - 惰性 I/O 有什么不好呢?

python - 查找多个出现作为较大模式的一部分

python - 如何显示来自 blender 脚本的消息?

c# - 使用 System.Web.Caching.Cache

java - 在流中使用 Java 8 Supplier 实现惰性求值