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

Ethan Furman ethan at stoneleaf.us
Fri Nov 21 17:31:41 CET 2014


On 11/21/2014 05:47 AM, Raymond Hettinger wrote:
> 
> Also, the proposal breaks a reasonably useful pattern of calling next(subiterator)
> inside a generator and letting the generator terminate when the data stream  ends.
>
> Here is an example that I have taught for years:
> 
>     def [...]
>         it1 = iter(iterable1)
>         it2 = iter(iterable2)
>         while True:
>             v1 = next(it1)
>             v2 = next(it2)
>             yield v1, v2

Stepping back a little and looking at this code, sans header, let's consider the possible desired behaviors:

  - have an exact match-up between the two iterators, error otherwise
  - stop when one is exhausted
  - pad shorter one to longer one

Two of those three possible options are going to require dealing with the StopIteration that shouldn't escape -- is the
trade of keeping one option short and simple worth the pain caused by the error-at-a-distance bugs caused when a
StopIteration does escape that shouldn't have?

--
~Ethan~

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: OpenPGP digital signature
URL: <http://mail.python.org/pipermail/python-dev/attachments/20141121/086d994c/attachment.sig>


More information about the Python-Dev mailing list