[EMAIL PROTECTED] wrote: > Hi, > > I might understand why this does not work, but I am not convinced it > should not - following: > > def nnn(): > print 'inside' > yield 1 > > def nn(): > def _nn(): > print 'inside' > yield 1 > > print 'before' > _nn() > print 'after' > > > for i in nnn(): > print i > > for i in nn(): > print i > > > > gives results: > > $ python f.py > inside > 1 > before > after > Traceback (most recent call last): > File "f.py", line 18, in ? > for i in nn(): > TypeError: iteration over non-sequence > > while I would expect: > $ python f.py > inside > 1 > before > inside > 1 > after > > Any insight? > > andy >
In the commented line, you are only creating a generator. This is not equivalent to calling its "next" function, i.e., nothing will be "yielded" the way you have written it. def nn(): def _nn(): print 'inside' yield 1 print 'before' _nn() # <== just makes a generator print 'after' James -- James Stroud UCLA-DOE Institute for Genomics and Proteomics Box 951570 Los Angeles, CA 90095 http://www.jamesstroud.com/ -- http://mail.python.org/mailman/listinfo/python-list