1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
import functools def first(it): for d in it: if d: return d def lazy(func): res = [] @functools.wraps(func) def wrapper(*args, **kwargs): if not res: res.append(func(*args, **kwargs)) return res[0] return wrapper