[Python-ideas] Map and filter should also convert StopIteration to RuntimeError

Terry Reedy tjreedy at udel.edu
Sat Dec 13 03:35:03 CET 2014

On 12/12/2014 7:36 PM, Greg Ewing wrote:
> Terry Reedy wrote:

"I have always taken this to mean that [next and __next__] are the only 
functions that should raise StopIteration," ...

>> PEP 479 reverses this acceptance by having generator.__next turn
>> StopIteration raised in a user-written generator function body into a
>> RuntimeError.  I propose that other builtin iterator.__next__ methods
>> that execute a passed in function do the same.
> Maybe also any user-written function whose
> name isn't "__next__"?

That such functions should catch StopIteration (most likely from next) 
is implied in the paragraph's opening sentence, repeated above.  What 
the replacement should be is a different matter.  There are often better 
choices than RuntimeError.

Terry Jan Reedy

More information about the Python-ideas mailing list