Что выведет код Junior Исключения и контекстные менеджеры спрашивают часто обновлено

Порядок try/except/else/finally

Вопрос

Что выведет код? По строке на каждый print.

def run(x):
    try:
        print('try')
        1 / x
    except ZeroDivisionError:
        print('except')
        return 'E'
    else:
        print('else')
        return 'OK'
    finally:
        print('finally')

print(run(0))
print(run(1))

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

Напишите, что выведет код: каждый вывод с новой строки.

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

Коротко

Код выведет: try, except, finally, E, try, else, finally, OK. При делении на ноль срабатывает except, подготавливается return "E", но перед выходом выполняется finally.

Что выведет

try
except
finally
E
try
else
finally
OK

Разбор

При делении на ноль срабатывает except, подготавливается return "E", но перед выходом выполняется finally. При x = 1 исключения нет: else, затем finally, затем функция возвращает OK. Значение печатается вызывающим кодом после finally.

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

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