Przejdź do treści głównej
🔒 Tryb podglądu. Pierwszych piętnaście lekcji Foundations jest darmowych; ta jest Pro. Rozpocznij 7-dniowy trial, aby odblokować edytor, podpowiedzi AI i resztę kursu. Wymagana karta, anulujesz w dowolnym momencie w Dashboard.Rozpocznij 7-dniowy trial →
← KursySenior Deep-DivesModule 1 · Concurrency internals · RecapExitStack do dynamicznego zarządzania kontekstempredict23 / 161
+100 XP
Zadanie
📝 **Pytanie:** Przewiduj dokładny wynik. \`res(name)\` to mały menedżer kontekstu, który wypisuje \`open:\` / \`close:\`. Trzy zasoby wchodzą do \`ExitStack\` w kolejności A → B → C. Kiedy \`with\` kończy działanie, w jakiej kolejności się zamykają? 📋 Wybierz właściwą odpowiedź. 💡 **Wskazówka:** Jeśli nie jesteś pewien, przeczytaj ponownie powyższą teorię.
Przewiduj wynik

Przeczytaj kod uważnie

from contextlib import ExitStack, contextmanager


@contextmanager
def res(name):
    print(f"open:{name}")
    try:
        yield name
    finally:
        print(f"close:{name}")


with ExitStack() as stack:
    a = stack.enter_context(res("A"))
    b = stack.enter_context(res("B"))
    c = stack.enter_context(res("C"))
    print(f"use:{a}{b}{c}")

print("done")

Co wypisze program? Napisz tutaj:

💬 Dyskusja

Zadaj pierwsze pytanie lub podziel się wskazówką.
Zaloguj się aby dołączyć do dyskusji. Czytanie jest darmowe.
Ładowanie dyskusji…