Un objeto generador en python es algo así como una lista perezosa. Los elementos solo se evalúan tan pronto como itera sobre ellos. (Por lo tanto, la lista de llamadas los evalúa a todos).
Por ejemplo puedes hacer:
>>> def f(x):
... print "yay!"
... return 2 * x
>>> g = (f(i) for i in xrange(3)) # generator comprehension syntax
>>> g
<generator object <genexpr> at 0x37b6c0>
>>> for j in g: print j
...
yay!
0
yay!
2
yay!
4Vea cómo f se evalúa solo a medida que itera sobre él. Puede encontrar excelente material sobre el tema aquí: http://www.dabeaz.com/generators/