[Python-ideas] Propagating StopIteration value
Serhiy Storchaka
storchaka at gmail.com
Tue Oct 9 17:28:14 CEST 2012
More information about the Python-ideas mailing list
Tue Oct 9 17:28:14 CEST 2012
- Previous message: [Python-ideas] Propagating StopIteration value
- Next message: [Python-ideas] Propagating StopIteration value
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 09.10.12 16:07, Oscar Benjamin wrote: > I really should have checked this before posting but I didn't have > Python 3.3 available: Generator expression also eats the StopIteration value: >>> next(x for x in f()) Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration > These next two seem wrong since there are two iterables (but I don't > think they can be done differently): > >>>> def g(): > .... return 'From the other generator...' > .... yield > .... >>>> next(itertools.compress(f(), g())) > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > StopIteration: Returned from generator! >>>> next(zip(f(), g())) > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > StopIteration: Returned from generator! >>> def h(): ... yield 42 ... return 'From the another generator...' ... >>> next(zip(f(), h())) Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration: Returned from generator! >>> next(zip(h(), f())) Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration: Returned from generator! This is logical. Value returned from the first exhausted iterator. > I guess this should be treated as undefined behaviour? Perhaps it > should be documented as such so that anyone who chooses to rely on it > was warned. This should be treated as implementation details now.
- Previous message: [Python-ideas] Propagating StopIteration value
- Next message: [Python-ideas] Propagating StopIteration value
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-ideas mailing list