Naar hoofdinhoud
🔒 Voorbeeldmodus. De eerste vijftien Foundations-lessen zijn gratis; deze is Pro. Start een 7-daagse trial om de editor, AI-hints en de rest van het curriculum te ontgrendelen. Kaart vereist, op elk moment opzegbaar in Dashboard.Start 7-daagse trial →
← CursussenSenior Deep-DivesModule 2 · CPython-interne onderdelen en prestatiescontextlib.contextmanagerpredict21 / 161
+75 XP
Opdracht
📝 **Vraag:** Voorspel de exacte output. \`track\` is een \`@contextmanager\` generator die \`enter:\` / \`exit:\` afdrukt en een \`behalve ValueError\` arm heeft. Het eerste 'met'-blok is een schone run. De tweede verhoogt \`ValueError("oops")\` in de body - crasht het programma vóór \`print("done")\`, of slikt de \`with\` het in? 📋 Kies het juiste antwoord. 💡 **Hint:** Herlees de bovenstaande theorie als je het niet zeker weet.
Voorspel uitvoer

Lees de code zorgvuldig

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")

Wat zal het programma uitprinten? Schrijf hier:

💬 Discussie

Wees de eerste — stel een vraag of deel een tip.
Log in om mee te doen aan de discussie. Lezen is gratis.
Discussie laden…