Я попытался найти его, но не смог найти подобную проблему. Я уверен, что это что-то глупое, но я не могу этого понять.
У меня есть следующий код:
def f(a):
try:
4 / a
except:
f(2)
else:
print('else')
finally:
print("finally")
Когда я вызываю функцию с 0 в качестве аргумента: f(0)
Возвращает:
else
finally
finally
Итак, в моем понимании, вот что должно произойти:
- 0 получает функцию;
- оператор try не может его выполнить;
- Кроме оператора оператор получает триггеры, которые снова вызывают функцию с допустимым аргументом, 2.
- С оператором try теперь все в порядке;
- оператор выписки else
else
- наконец-то выписки оператора
finally
Почему finally
печатается дважды?