Zum Hauptinhalt springen
🔒 Vorschaumodus. Die ersten fünfzehn Foundations-Lektionen sind kostenlos; diese hier ist Pro. Starte einen 7-Tage-Trial, um den Editor, AI-Hinweise und den Rest des Lehrplans freizuschalten. Karte erforderlich, jederzeit im Dashboard kündbar.7-Tage-Trial starten →
← KurseSenior Deep-DivesModul 2 · CPython-Interna und Leistungcontextlib.contextmanagerpredict21 / 161
+75 XP
Aufgabe
📝 **Frage:** Sagen Sie die genaue Ausgabe voraus. „track“ ist ein „@contextmanager“-Generator, der „enter:\“ / „exit:“ ausgibt und einen „Exception ValueError“-Arm hat. Der erste „with“-Block ist ein sauberer Lauf. Der zweite löst „ValueError(“oops“)\` im Körper aus – stürzt das Programm vor „print(“done“)\` ab, oder verschluckt es das „with“? 📋 Wählen Sie die richtige Antwort. 💡 **Hinweis:** Lesen Sie die obige Theorie noch einmal, wenn Sie sich nicht sicher sind.
Sage die Ausgabe vorher

Lies den Code sorgfältig

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

Was wird das Programm ausgeben? Schreib hier:

💬 Diskussion

Sei der erste — stelle eine Frage oder teile einen Tipp.
Anmelden um an der Diskussion teilzunehmen. Lesen ist kostenlos.
Diskussion wird geladen…