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)
_______________________________________________
Python-Dev mailing list
[email protected]
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com