Към основното съдържание
🔒 Режим за преглед. Първите петнадесет урока на Foundations са безплатни; този е Pro. Стартирайте 7-дневен trial, за да отключите редактора, AI подсказките и останалата част от курса. Изисква се карта, отменете по всяко време в Dashboard.Стартирай 7-дневен trial →
← КурсовеSenior Deep-DivesМодул 2 · Вътрешни елементи и производителност на CPythoncontextlib.contextmanagerpredict21 / 161
+75 XP
Задача
📝 **Въпрос:** Предскажете точния резултат. \`track\` е генератор на \`@contextmanager\`, който отпечатва \`enter:\` / \`exit:\` и има рамо \`except 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")

Какво ще изведе програмата? Напиши тук:

💬 Дискусия

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