Yield

John Henry john106henry at hotmail.com
Wed Nov 15 12:58:22 EST 2006


Thank you.  This is very clear.  I can see that this is useful in lots
of situations.

Fredrik Lundh wrote:
> Mateuszk87 wrote:
>
> > may someone explain "yield" function, please. how does it actually work
> > and when do you use it?
>
> it returns a value from a function without actually terminating the
> function; when the function is resumed, it'll continue to execute after
> the yield.
>
> a function that contains a yield statement is called a "generator", and
> is most often used in a for-in loop, or in other contexts that expect a
> sequence.  the loop is automatically terminated when the function
> returns in a usual way:
>
>  >>> def gen():
> ...     yield 1
> ...     yield 2
> ...     yield 3
> ...
>  >>> for item in gen():
> ...     print item
> ...
> 1
> 2
> 3
>  >>> sum(gen())
> 6
>  >>> [str(i) for i in gen()]
> ['1', '2', '3']
>
> you can also use the generator "by hand"; when you call a generator
> function, it returns a special "generator object", and then immediately
> suspends itself.  to run the generator, call its "next" method:
>
>  >>> g = gen()
>  >>> g
> <generator object at 0x00AE64E0>
>  >>> g.next()
> 1
>  >>> g.next()
> 2
>  >>> g.next()
> 3
>
> when the generator is exhausted, it raises a StopIterator exception:
>
>  >>> g.next()
> Traceback (most recent call last):
>    File "<stdin>", line 1, in <module>
> StopIteration
>
> reference information:
>
>      http://effbot.org/pyref/yield.htm
> 
> hope this helps!
> 
> </F>




More information about the Python-list mailing list