Sari la conținutul principal
🔒 Mod previzualizare. Primele cincisprezece lecții Foundations sunt gratuite; aceasta este Pro. Pornește un trial de 7 zile pentru a debloca editorul, sugestiile AI și restul programului. Card necesar, anulează oricând în Dashboard.Pornește trial de 7 zile →
← CursuriSenior Deep-DivesModulul 2 · CPython Interne și performanțăcontextlib.contextmanagerpredict21 / 161
+75 XP
Sarcină
📝 **Întrebare:** Preziceți rezultatul exact. \`track\` este un generator de \`@contextmanager\` care imprimă \`enter:\` / \`exit:\` și are un braț \`except ValueError\`. Primul bloc \`cu\` este o rulare curată. Al doilea ridică \`ValueError("ops")\` în interiorul corpului — programul se blochează înainte de \`print("terminat")\` sau \`cu\` îl înghită? 📋 Alegeți răspunsul potrivit. 💡 **Sugestie:** Recitiți teoria de mai sus dacă nu sunteți sigur.
Prezice ieșirea

Citește codul cu atenție

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

Ce va afișa programul? Scrie aici:

💬 Discuție

Fii primul — pune o întrebare sau împărtășește un sfat.
Conectează-te pentru a te alătura discuției. Citirea este gratuită.
Se încarcă discuția…