Я встретил фрагмент кода Python 3:
def gen():
try:
while True:
yield 1
finally:
print("stop")
print(next(gen()))
После того, как я запустил его, я сначала подумал, что вывод должен быть:
1
Но на самом деле результат:
stop
1
Как это может произойти? Что случилось под капотом?
Если я запусту for i in gen(): print(i)
, будет бесконечный цикл, что я и ожидал. В чем разница между for
и next
здесь?