def f_gen(): x=1 yield(x) x=2 yield(x) def f(cb=None): gen = f_gen() if cb: for x in gen: cb(x) else: return gen