Выбор ответа Middle Исключения и контекстные менеджеры обновлено

return в try и в finally

Вопрос

Что вернёт f()?

def f():
    try:
        return "try"
    finally:
        return "finally"

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: "finally". finally выполняется после return в try, и его собственный return перекрывает уже подготовленное значение.

Варианты ответа

  1. "finally"правильный ответ
  2. "try"
  3. None
  4. Будет исключение

Разбор

finally выполняется после return в try, и его собственный return перекрывает уже подготовленное значение. Так же return в finally молча глотает летящее исключение, поэтому так писать нельзя: с Python 3.14 компилятор выдаёт на это SyntaxWarning (PEP 765).

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.