Fresh Function Wrapper
class FreshFunc:
def __init__(self, fn, n=1):
self._i = 0
self._n = n
self._fn = fn
self._ret = None
def __call__(self, *args, **kwargs):
if self._i == 0:
ret = self._ret = self._fn(*args, **kwargs)
else:
ret = self._ret
self._i += 1
if self._i >= self._n:
self._i = 0
return self._ret
f = FreshFunc(lambda: (print(1), 2), 10)
f()