[Python-Dev] Short-circuiting iterators
Edward Loper
edloper at gradient.cis.upenn.edu
Wed Nov 30 20:36:54 CET 2005
> I had an idea this morning for a simple extension to Python's iterator
> protocol that would allow the user to force an iterator to raise
> StopIteration on the next call to next(). My thought was to add a new
> method to iterators called stop().
There's no need to change the iterator protocol for your example use
case; you could just define a simple iterator-wrapper:
class InterruptableIterator:
stopped = False
def __init__(self, iter):
self.iter = iter()
def next(self):
if stopped:
raise StopIteration('iterator stopped.')
return self.iter.next()
def stop(self):
self.stopped = True
And then just replace:
> generator = some_generator_function()
with:
generator = InterruptableIterator(some_generator_function())
-Edward
More information about the Python-Dev
mailing list