Method returning an Iterable Object
James Mills
prologic at shortcircuit.net.au
Mon Jan 26 22:33:22 EST 2009
On Tue, Jan 27, 2009 at 1:16 PM, Anjanesh Lekshminarayanan
<mail at anjanesh.net> wrote:
> But how come a raise StopIteration in the next() method doesnt need to
> be caught ? It works without breaking.
Because this exception is specially dealt
with when iterating over an iterator. The
"raise StopIteration" is what causes the
iteration to stop.
Consider:
>>> x = EveryOther(xrange(10))
>>> x.next()
0
>>> x.next()
2
>>> x.next()
4
>>> x.next()
6
>>> x.next()
8
>>> x.next()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "foo.py", line 12, in next
raise StopIteration
StopIteration
>>> x = EveryOther(xrange(10))
>>> list(x)
[0, 2, 4, 6, 8]
>>>
cheers
James
More information about the Python-list
mailing list