[EMAIL PROTECTED] wrote: >>>> def printrange(): > ... for x in range(10): > ... x = yield x > ... print x > ... >>>> g = printrange() >>>> for x in g: > ... g.send(x*2) > ... > 0 > 1 > None > 4 > 3 > None > 8 > 5 > None > 12 > 7 > None > 16 > 9 > None > > Now, I was expecting that to be 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20. > > What am I missing here?
the output doesn't match your sample program; I assume you left out a print statement or two from the second loop. what you seem to be missing is that "next" (which is called by the for-in loop) is basically the same thing as "send(None)". in other words, you end up pulling two items from the generator for each iteration. </F> -- http://mail.python.org/mailman/listinfo/python-list