Guido van Rossum added the comment: If all examples were just using "raise StopIteration" instead of "return" in a generator I would be very happy. Such code can be trivially fixed by using "return" and the __future__ import will help the eventual transition.
It's sad that apparently this use of return hasn't been better advertised -- it has existed since generators were first introduced. On Fri, Nov 21, 2014 at 9:44 AM, Chris Angelico <rep...@bugs.python.org> wrote: > > Chris Angelico added the comment: > > Yep, the question is whether any of the "raise StopIteration" lines are > actually non-local flow control. If they're local, then it's easy: > mechanical replacement with "return" and it becomes compatible with all > versions (unless it has a value attached to it, as "return x" doesn't work > in Py2). But if they're non-local, some refactoring will need to be done. > > In any case, my line of argument is: A generator function is not an > iterator's __next__ method, ergo iterator protocol does not apply. Use of > StopIteration is a hack that happens to work because of how generator > functions are implemented (a thin wrapper around an iterator), but it's not > part of the *concept* of a generator function. > > ---------- > > _______________________________________ > Python tracker <rep...@bugs.python.org> > <http://bugs.python.org/issue22906> > _______________________________________ > ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue22906> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com