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-DivesModule 7 · Memory, GC, modern typingcontextlib.ExitStack — dynamic context-manager compositionpredict120 / 161
+150 XP
Compito
📝 **Compito:** Prevedere l'output esatto. Tre gestori di contesto annidati vengono inseriti in un ExitStack, quindi il corpo viene eseguito, quindi ExitStack esce in ordine LIFO. L'elenco degli eventi cattura l'ordine di __enter__, body work e __exit__. 📋 Implementa la funzione sopra. I test vengono eseguiti automaticamente. 💡 **Suggerimento:** Rileggi la teoria se rimani bloccato.
Predici output

Leggi il codice attentamente

from contextlib import ExitStack


events: list[str] = []


class Tracked:
    def __init__(self, name: str) -> None:
        self.name = name

    def __enter__(self) -> "Tracked":
        events.append(f"enter {self.name}")
        return self

    def __exit__(self, *exc: object) -> bool:
        events.append(f"exit {self.name}")
        return False


with ExitStack() as stack:
    a = stack.enter_context(Tracked("A"))
    b = stack.enter_context(Tracked("B"))
    c = stack.enter_context(Tracked("C"))
    events.append("body")

for e in events:
    print(e)

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…