Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python lazy evaluator

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.

like image 725
Neil G Avatar asked Mar 14 '11 05:03

Neil G


1 Answers

I'm a bit confused whether you seek caching or lazy evaluation. For the latter, check out the module lazy.py by Alberto Bertogli.

like image 127
Janne Karila Avatar answered Nov 02 '22 02:11

Janne Karila