Python lazy evaluator

2019-01-26 12:23发布

Is there a Pythonic way to encapsulate a lazy function call, whereby on first use of the function f(), it calls a previously bound function g(Z) and on the successive calls f() returns a cached value?

Please note that memoization might not be a perfect fit.

I have:

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

The code works, but I want to restructure it so that g(Z) is only called if the value is used. I don't want to change the definition of g(...), and Z is a bit big to cache.

EDIT: I assumed that f would have to be a function, but that may not be the case.

7条回答
Emotional °昔
2楼-- · 2019-01-26 13:17

Just for completness, here is a link for my lazy-evaluator decorator recipe:

https://bitbucket.org/jsbueno/metapython/src/f48d6bd388fd/lazy_decorator.py

查看更多
登录 后发表回答