[Tutor] generators

Joel Goldstick joel.goldstick at gmail.com
Tue Apr 3 21:15:46 CEST 2012


On Tue, Apr 3, 2012 at 2:38 PM, mike jackson <mgjack at gmx.com> wrote:
> I am trying understand python and have done fairly well, So for it has been easy to learn and is concise.  However I seem to not quite understand the use of a generator over a function(I am familiar with functions [other languages and math]).  To me (excepting obvious syntax differences) a generator is a function.  Why should I use a generator instead of a function or vice versa?  Is perhaps specfic uses it was created to handle?  A great web page with good examples would be nice.  Of course if you can sum it up rather easy then by all means go ahead.
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor

A generator function is a special kind of function that uses the
'yield' statement to return a value.  The next time the function is
called, it starts up from the place following the yield statement.
They are useful in producing the next value in a computed sequence of
values without having to compute the whole sequence at one go.

Here is a great tutorial about things you can do with generators:
http://www.dabeaz.com/generators/

Here is some simple code with results below

#! /usr/bin/env python
""" generator vs normal function"""
""" a 'Normal' function"""
def n(r):
    v = []
    for i in range(r):
      v.append(i*2)
    return v

""" A generator function"""
def g(r):
    for i in range(r):
        yield i*2

print n(3)

for i in g(3):
    print i

generated_list = [i for i in g(3)]
print generated_list

[0, 2, 4]
0
2
4
[0, 2, 4]

-- 
Joel Goldstick


More information about the Tutor mailing list