[Python-Dev] Single- vs. Multi-pass iterability
Alex Martelli
aleax@aleax.it
Thu, 18 Jul 2002 07:57:37 +0200
On Thursday 18 July 2002 01:32 am, Greg Ewing wrote:
> Alex Martelli <aleax@aleax.it>:
> > All files have seek and write, but not on all files do they work -- and
> > the same goes for iteration. I.e., it IS something of a mess
>
> I've just had a thought. Maybe it would be less of a mess
> if what we are calling "iterators" had been called "streams"
Possibly -- I did use the "streams" name often in the tutorial
on iterators and generators, it's a very natural term.
> instead. Then the term "iterator" could have been reserved
> for the special case of an object that provides stream
> access to a random-access collection.
Nice touch, except that I keep quibbling on the "random
access" need -- see my previous msg about sets.
> Then you could say that a file object is a stream object
That's what I'd love to do -- and requires the file object to
expose a next method and have iter(f) is f. That's what
Oren's patch does, and the reason I'm trying to save it
from the need for a reference loop.
> that provides line-by-line access to an OS file. Other
> stream objects can be constructed that give access to
> the OS file in other units. That would all make sense
> without seeming to imply any multi-pass ability.
Seekable files can be multi-pass, but in the strict sense
that you can rewind them -- it's still impractical to have
them produce multiple *independent* iterators (needing
some sort of in-memory caching).
Alex