(default, Oct 28 2018, 19:44:12) [MSC v.1915 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> def generate_loop(): ... for i in range(10): ... print(i) ... # should raise StopIteration when i > 5 ... k = next(j for j in range(5) if j == i) ... print(k) ... yield k ... >>> >>> def generate(): ... # should raise StopIteration ... k = next(j for j in range(5) if j == 6) ... yield k ... >>> >>> print(list(generate_loop())) 0 0 1 1 2 2 3 3 4 4 5 [0, 1, 2, 3, 4] >>> >>> print(list(generate())) [] >>> >>> k = next(j for j in range(5) if j == 6) Traceback (most recent call last): File "", line 1, in StopIteration >>>
Within a generator function, StopIteration exception is a sign that generator is finished. This is why this exception is caught automatically, and closes generator. This is normal and documented behaviour of generators.
History
Date
User
Action
Args
2022-04-11 14:59:11
admin
set
github: 80147
2019-02-11 13:46:42
SilentGhost
set
status: open -> closedtype: behaviornosy: + SilentGhost, sheiunmessages: + resolution: not a bugstage: resolved