Yield Statement In Python

How the yield statement and the generator function work in Python?

  • A python function with a yield statement is called a generator function.


  • Generator functions has yield expressions in their function body that produce a series of values in a for loop or one value at a time while calling the __next__() method.


  • What a generator function generates?
    • When a generator function is invoked no code in the generator function is executed.
    • It simply returns a generator iterator object.


  • Each time the __next__() method of a generator iterator object is called - the generator function is executed
  • Till the yield statement


  • return statement


  • End of the generator function


  • The moment the yield statement in the generator function is executed the state of the function is maintained and the value of the expression list is

returned to the caller -  the caller who called the __next__() on generator iterator object.


  • Think of yield statement as just another external call to a function.


  • After returning the expression list the execution of the generator function continues till a return, end of the function.


  • As per Python's iterator protocol, each invocation of __next__() should return one value from the iterable/collection - which is what we get from the iterator object obtained from the generator function.




# Write a generator function for a set of positive integers starting from zero

def PositiveInts(n):

    i = 0

    while i < n:

        yield i  

        i = i +1


# Obtain a generator object

generatorObject =  PositiveInts(2)      


# call next() on generator object every time you need a value from the generator function





# for calls next() internally on the generator object

for i in PositiveInts(4):













Copyright 2018 © pythontic.com