Generators in Python

Generators in python; Through this tutorial, i am going to show you about python generators and how to use generators with python programs.

Python generators are used to create the iterators, but with a different approach. Generators are simple functions that return an iterable set of items, one at a time, in a unique way. There is a lot of things in building iterators in Python. We have to implement a class with __iter__() and __next__() method.

Python Generators

There is a lot of overhead in building an iterator in Python. we have to implement a class with __iter__() and __next__() method, keep track of internal states, raise StopIteration when there was no values to be returned etc.

How to create a generator in Python?

It is very easy to create a generator in Python programming. It is as easy as defining a normal function with yield statement instead of a return statement.

The main difference between normal function and Python Generators is that the return statement terminates the function entirely; yield statement pauses the function saving all its states and variable values and later continues from there on successive calls.

See the following example of Generators in Python.

def createGenerator():
    i = 1
    print('Python')
    print(i)
    yield i
    i += 1
    print('PHP')
    print(i)
    yield i
    i += 1
    print('java')
    print(i)
    yield i
gen = createGenerator()
next(gen)
next(gen)
next(gen)

See the following output of above python program:

 Python
 1
 PHP
 2
 java
 3

One interesting thing to note in the above example is that the value of the variable i is remembered between each call.

Unlike any normal functions, the local variables are not destroyed when the function yields. In addition to that, the generator object can be iterated only once.

For Loops with Generators

Use the python for loop with Generators. And display the values with executing the next() function.

You can see the following example:

def createGenerator():
    i = 1
    print('Ronin')
    yield i
    i += 1
    print('RedSkull')
    yield i
    i += 1
    print('Rocket')
    yield i
for g in createGenerator():
    print(g)

See the following output of the above python program:

 python
 1
 PHP
 2
 Java
 3

Recommended Python Tutorials

Recommended:-Functions in Python
Recommended:-Python Modules
Recommended:-Python Lists
Recommended:-Python Strings

Leave a Comment