[Python-Dev] [Python-ideas] PEP 479: Change StopIteration handling inside generators (original) (raw)
Chris Angelico rosuav at gmail.com
Wed Nov 19 22:44:33 CET 2014
- Previous message: [Python-Dev] PEP 479: Change StopIteration handling inside generators
- Next message: [Python-Dev] Move selected documentation repos to PSF BitBucket account?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Thu, Nov 20, 2014 at 3:45 AM, Nick Coghlan <ncoghlan at gmail.com> wrote:
The part I found most compelling was when you pointed out that in the special method implementations, the normal return path was always spelled with "return", while the "value missing" result was indicated with a special kind of exception (StopIteration, AttributeError, IndexError or KeyError), and then any other exception was consider unexpected.
Generators add the third notion of being able to suspend execution via "yield", which then left them with two different ways of spelling termination inside the frame: "return" OR "raise StopIteration". The second spelling ("raise StopIteration") is then inherently surprising, as it's entirely redundant, except in that it allows you to effectively have a "hidden return" in a generator frame that can't be done anywhere else.
(The above was said on -ideas, but discussion is now moving to -dev, so I hope it's okay to send the response there.)
Added a paragraph to the PEP draft:
https://github.com/Rosuav/GenStopIter/commit/695961
Should today's date be added to the Post-History?
ChrisA
- Previous message: [Python-Dev] PEP 479: Change StopIteration handling inside generators
- Next message: [Python-Dev] Move selected documentation repos to PSF BitBucket account?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]