Блок else
не выполнен, поскольку вы покинули функцию до того, как у нее появилась возможность сделать это.
Однако блок finally
выполняется всегда (если вы не дернули шнур питания).или что-то в этом роде.
Рассмотрим это (как мысленный эксперимент; пожалуйста, не делайте этого в реальном коде):
def whoops():
try:
return True
finally:
return False
Посмотрите, что он возвращает:
>>> whoops()
False
Если вас это смущает, вы не одиноки.Некоторые языки, такие как C #, активно запрещают вам помещать оператор return
в предложение finally
.