Skip to content

Lazy Evaludation

use a class to implement lazy function

class Test():
    def __init__(self, name):
        self.name = name
        self._value = None

    @property
    def value(self):
        if self._value is None:
            self._value = self._get_value()
        return self._value

    def _get_value(self):
        val = my_api(self.name)
        return val

lazy package

from lazy import lazy
@lazy
def f(x, y):
  v = 0
  for i in range(10000):
    v += x ** y
  return v

import time
t0 = time.time()
v = f(12,3)
print(f'time: {time.time() - t0}, value: {v}')
t0 = time.time()
v = f(12,3)
print(f'time: {time.time() - t0}, value: {v}')