Fibonacci - generator
examples/generators/fibonacci_generator.py
def fibonacci(): a, b = 0, 1 while True: a, b = b, a+b yield a for a in fibonacci(): print(a) if a % 17 == 0: print('found') break if a > 20000: print('not found') break
1 1 2 3 5 8 13 21 34 found
When we enter the for loop the fibonacci() function is called and returns a generator object.
Then next is called on this generator object which executes the content of the function up to the call of yield
and return the value. Then ever time the for-loop calls next the function continues running till it reaches yield
again or till it reaches the end of the function. (Which will never happen in this case.)