Разбор по шагам
1️⃣Вызывается test()
2️⃣Выполняется блок try, доходим до return 1
3️⃣Python запоминает, что нужно вернуть 1, но перед выходом из функции обязан выполнить блок finally
4️⃣Входим в finally → встречаем return 2
5️⃣Запомненное значение 1 безвозвратно отбрасывается
6️⃣Функция завершается с возвратом 2
7️⃣print(2) выводит 2
Почему это важно
Никогда не используйте операторы управления потоком (return, break, continue) внутри finally. Это антипаттерн: он может скрывать исключения и ломать ожидаемую логику возврата значений из функции.
Post #4699
929
- ✍ 3