def make_generator(f): n = 1 while True: yield f(n) n += 1 def fibonacci(n): if n <= 1: return n return fibonacci(n-1) + fibonacci(n-2) if __name__ == "__main__": # a print("fibonacci 10 next terms") fib_generator = make_generator(fibonacci) for x in range(10): print(next(fib_generator)) # b print("square generator") square_generator = make_generator(lambda x : x**2) for x in range(10): print(next(square_generator)) print("1 generator") one_generator = make_generator(lambda x : 1) for x in range(10): print(next(one_generator))