wrote in news:11*********************@h48g2000cwc.googlegro ups.com in
comp.lang.python:
Any insight?
From the docs:
<quote>
The yield statement is only used when defining a generator function, and is
only used in the body of the generator function. Using a yield statement in
a function definition is sufficient to cause that definition to create a
generator function instead of a normal function.
</quote>
Note that its when a function defention contains a yeild statement
(expression) that the defenition is taken to be a generator function.
def nn():
def _nn():
print 'inside'
yield 1
print 'before'
_nn()
print 'after'
So tha above (nn()) isn't a generator as it doesn't contain a
yield statement.
Note also that the call to _nn() returns a generator, it isn't a
regular function call.
Here is nn() re-writen to return what you may have originaly expected:
def nn():
def _nn():
print 'inside'
yield 1
print 'before'
for i in _nn():
yield i
print 'after'
So to forward another generator you need to iterate over it and
yield each element, just as you would for any other iterable.
Rob.
--
http://www.victim-prime.dsl.pipex.com/