Перейти к основному содержимому
🔒 Режим превью. Первые 15 уроков Foundations — бесплатные; этот — Pro. Запусти 7-дневный trial чтобы открыть редактор, AI-подсказки и остальной курс. Нужна карта, отмена в Dashboard в любой момент.Начать 7-дневный trial →
← КурсыSenior Deep-DivesМодуль 2 · Внутреннее устройство и производительность CPythoncontextlib.contextmanagerpredict21 / 161
+75 XP
Задание
📝 **Вопрос:** Предскажите точный результат. \`track\` — это генератор \`@contextmanager\`, который печатает \`enter:\` / \`exit:\` и имеет руку \`кроме ValueError\`. Первый блок \`with\` — это чистый запуск. Второй вызывает \`ValueError("oops")\` внутри тела — происходит ли сбой программы перед \`print("done")\`, или \`with\` проглатывает его? 📋Выберите правильный ответ. 💡 **Подсказка:** Если вы не уверены, перечитайте приведенную выше теорию.
Предскажи вывод

Прочти код внимательно

from contextlib import contextmanager


@contextmanager
def track(label):
    print(f"enter:{label}")
    try:
        yield label.upper()
    except ValueError as e:
        print(f"caught:{e}")
    finally:
        print(f"exit:{label}")


with track("a") as t:
    print(f"body:{t}")

with track("b") as t:
    print(f"body:{t}")
    raise ValueError("oops")

print("done")

Что выведет программа? Напиши здесь:

💬 Обсуждение

Будьте первым — задайте вопрос или поделитесь подсказкой.
Войдите чтобы участвовать в обсуждении. Чтение бесплатно.
Загрузка обсуждения…