A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2002-July/026475.html below:

[Python-Dev] Termination of two-arg iter()

[Python-Dev] Termination of two-arg iter()Oren Tirosh oren-py-d@hishome.net
Sun, 14 Jul 2002 07:05:13 -0400
On Sun, Jul 14, 2002 at 01:16:10AM -0700, Brett Cannon wrote:
> [Oren Tirosh]
> 
> > At the time this was discussed on the list has anyone considered the
> > possibility of raising an exception?  Something like 'IteratorExhausted'?
> >
> 
> I have no idea whether this was discussed before or not, but I personally
> don't like the idea of having another exception being raised by iterators.
> Without reading the PEP this exact second, my gut response is that
> iterators should have a single exception that signals it has reached its
> end.  It seems like StopIteration is saying "stop please" and
> IteratorExhausted would be like screaming "STOP CALLING .next()!!!".
> Either you force them to get the clue the first time or you let them
> continue being rude; Python shouldn't need to raise its voice and act like
> an over-bearing parent.  If we wanted over-bearing parents we would be
> yelling for typing of arguments.  =)

This anthropomorphic description has too many irrelevant associations.  Let's 
leave the parents out of this.

The logic is simple:  StopIteration is not an error. It's not even a warning,
it's a normal part of program operation. It uses the exception mechanism 
because it is the most convenient form of out-of-band signalling.  The 
hypothetical IteratorExhausted is an error. The fact that both of them
happen to be exceptions is almost a coincidence.

Unlike IndexError which is sometimes used to bail out of loops the 
IteratorExhausted exception is almost guaranteed to be a programmer error.
And it's error that would otherwise pass silently and produce strange 
results.

> definitely will be.  I know I thought that StopIteration was continuously
> raised until the emails on this subject started.  

For most Python iterators it is.  This behavior is OK but it could be changed 
to something stricter.  So far I thought this behavior was mandatory so I
didn't raise this proposal.  Now I learned that officially it is undefined
and that this behavior is just what most Python iterators do so it could be
possible to change it to something safer.

	Oren




RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4