[Python-Dev] PEP 479: Change StopIteration handling inside generators

Guido van Rossum guido at python.org
Wed Nov 19 21:10:09 CET 2014


There's a new PEP proposing to change how to treat StopIteration bubbling
up out of a generator frame (not caused by a return from the frame). The
proposal is to replace such a StopIteration with a RuntimeError (chained to
the original StopIteration), so that only *returning* from a generator (or
falling off the end) causes the iteration to terminate.

The proposal unifies the behavior of list comprehensions and generator
expressions along the lines I had originally in mind when they were
introduced. It renders useless/illegal certain hacks that have crept into
some folks' arsenal of obfuscated Python tools.

In Python 3.5 the proposed change is conditional on:

    from __future__ import replace_stopiteration_in_generators

This would affect all generators (including generator expressions) compiled
under its influence. The feature would become standard in Python 3.6 or 3.7.

The PEP is here:

    https://www.python.org/dev/peps/pep-0479/

To avoid a lot of requests for clarification you may also want to read up
on the python-ideas discussion, e.g. here:

    https://groups.google.com/forum/#!topic/python-ideas/yJi1gRot9yY

I am leaning towards approving this PEP, but not until we've had a review
here at python-dev. I would like to thank Chris Angelico for writing the
original PEP draft.

-- 
--Guido van Rossum (python.org/~guido)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20141119/28c18f47/attachment.html>


More information about the Python-Dev mailing list