Why are "broken iterators" broken?

Fredrik Lundh fredrik at pythonware.com
Sun Sep 21 17:27:11 CEST 2008

Steven D'Aprano wrote:

> According to the Python docs, once an iterator raises StopIteration, it 
> should continue to raise StopIteration forever. Iterators that fail to 
> behave in this fashion are deemed to be "broken":
> http://docs.python.org/lib/typeiter.html
> I don't understand the reasoning behind this. As I understand it, an 
> iterator is something like a stream. There's no constraint that once a 
> stream is empty it must remain empty forever.

it's a design guideline, not an absolute rule.

but I disagree that an iterator is "something like a stream".  it's 
rather "something like a pointer or an index", that is, an object that 
helps you iterate over all members in a collection.


More information about the Python-list mailing list