In article <[EMAIL PROTECTED]>,
 Fredrik Lundh <[EMAIL PROTECTED]> wrote:

> 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.
> 
> </F>

There are plausible examples of collections which grow while you're 
iterating over them.  I'm thinking specifically of a queue in a 
multi-threaded application.  One thread pushes work onto the back of the 
queue while another pops from the front.  The queue could certainly go 
empty at times.  But, maybe a Python iterator is just the wrong way to 
model such behavior.
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to