Почему блок «finally» запускается после результата в этом коде?Python

Программы на Python
Ответить
Anonymous
 Почему блок «finally» запускается после результата в этом коде?

Сообщение Anonymous »

Код: Выделить всё

def tricky_generator(n):
for i in range(n):
try:
if i % 2 == 0:
yield i // 2
else:
raise ValueError(f"Odd value: {i}")
except ValueError as e:
print(e)
yield -1
finally:
print(f"Finally block executed for i={i}")

gen = tricky_generator(5)
result = [next(gen) for _ in range(5)]
print("Result:", result)
Результат должен быть напечатан в конце, но каким-то образом после него по какой-то причине выполняется блокfinally i = 4, хотя все Блоки должны выполняться до результата

Подробнее здесь: https://stackoverflow.com/questions/793 ... -this-code
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»