breaking iteration of generator method
Hans Nowak
hans at zephyrfalcon.org
Tue Nov 4 13:08:03 EST 2003
Brian wrote:
> Hello;
>
> What happens when a program breaks (think keyword 'break') its iteration
> of a generator? Is the old state in the generator preserved?
>
> Ex:
>
> # .gen() is generator method.
>
> for i in myObject.gen():
> if i == specialValue:
> break
>
> Do subsequent calls to .gen() start off with new locals? Or, would
> the iteration begin after the yielded 'i' that caused the for-statement
> to exit?
It's easy to find out... :-)
>>> def g():
... for i in range(10):
... yield i
...
>>> gen = g()
>>> for x in gen:
... if x == 4:
... break
... else:
... print x,
...
0 1 2 3
>>> for x in gen:
... print x,
...
5 6 7 8 9
>>>
However, if you use g() rather than an existing generator object, a new
generator will be created:
>>> for x in g():
... if x == 4:
... break
... else:
... print x,
...
0 1 2 3
>>> for x in g():
... print x,
...
0 1 2 3 4 5 6 7 8 9
>>>
HTH,
--
Hans (hans at zephyrfalcon.org)
http://zephyrfalcon.org/
More information about the Python-list
mailing list