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> -- http://mail.python.org/mailman/listinfo/python-list