[Python-Dev] Re: A `cogen' module [was: Re: PEP 218 (sets); moving set.py to Lib]
Guido van Rossum
guido@python.org
Wed, 28 Aug 2002 16:19:11 -0400
> Oh, come on you two... stop beating up the poor strawman. The reiter()
> function doesn't make a single redundant call to __iter__. It's just
> like iter() but ensures in passing that the result is really a fresh
> iterator.
I'm really sorry. I had forgotten what exactly your proposal was. It
is actually very reasonable:
Proposal: new built-in function reiter()
def reiter(obj):
"""reiter(obj) -> iterator
Get an iterator from an object. If the object is already an iterator a
TypeError exception will be raised. For all Python built-in types it is
guaranteed that if this function succeeds the next call to reiter() will
return a new iterator that produces the same items unless the object is
modified. Non-builtin iterable objects which are not iterators SHOULD
support multiple iteration returning the same items."""
it = iter(obj)
if it is obj:
raise TypeError('Object is not re-iterable')
return it
--Guido van Rossum (home page: http://www.python.org/~guido/)