[Python-Dev] Single- vs. Multi-pass iterability

Guido van Rossum guido@python.org
Fri, 12 Jul 2002 10:30:08 -0400


I think this thread is ready to die.

> > That version of the xrange object was broken.
> 
> That's exactly my point.  There will be more broken code like this
> as long as people keep confusing iterators and iterables. Making the
> language semantically cleaner should help prevent things like this
> in the long run.

I don't think that the language can help this.  There's nothing oyu
can do to remove the wart from file objects.

> I remember it was pretty hard to actually convince anyone that
> xrange was broken.

Huh?  IIRC I said it was broken right away and pushed Raymond to fix
it.

> When I pointed out that the xrange 'iterator' modified the state of
> the xrange 'container' people responded that it's ok because this
> happens with file objects, too...

A confusion that you don't stamp out by "fixing" files.

> > I don't see what's wrong with the file object.  Iterating over a file
> > changes the file's state, that's just a fact of life.
> 
> A file object is an iterator pretending to be a container.

In what sense does it pretend to be a container?  File objects are
what they are; they have rich semantics for a reason.

> For historical reasons it uses 'readline' instead of 'next' and an
> empty string instead of StopIteration but it basically does the same
> job. A file object is not really a container that can produce
> iterators of itself.

I think this thread is ready to die.

--Guido van Rossum (home page: http://www.python.org/~guido/)