Vai al contenuto principale
🔒 Modalità anteprima. Le prime quindici lezioni di Foundations sono gratuite; questa è Pro. Avvia un trial di 7 giorni per sbloccare l'editor, i suggerimenti AI e il resto del programma. Carta richiesta, disdici in qualsiasi momento dalla Dashboard.Avvia trial di 7 giorni →
← CorsiSenior Deep-DivesModulo 2 · Componenti interni e prestazioni di CPythoncontextlib.contextmanagerpredict21 / 161
+75 XP
Compito
📝 **Domanda:** Prevedere l'output esatto. \`track\` è un generatore \`@contextmanager\` che stampa \`enter:\` / \`exit:\` e ha un braccio \`eccetto ValueError\`. Il primo blocco \`with\` è un'esecuzione pulita. Il secondo solleva \`ValueError("oops")\` all'interno del corpo: il programma si blocca prima di \`print("done")\` o \`with\` lo inghiotte? 📋 Scegli la risposta giusta. 💡 **Suggerimento:** Rileggi la teoria sopra se non sei sicuro.
Predici output

Leggi il codice attentamente

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

Cosa stamperà il programma? Scrivi qui:

💬 Discussione

Sii il primo a fare una domanda o condividere un consiglio.
Accedi per partecipare alla discussione. La lettura è gratuita.
Caricamento discussione…