是否有一种 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/