Μετάβαση στο κύριο περιεχόμενο
🔒 Λειτουργία προεπισκόπησης. Τα πρώτα δεκαπέντε μαθήματα Foundations είναι δωρεάν· αυτό είναι Pro. Ξεκινήστε ένα 7ήμερο trial για να ξεκλειδώσετε τον επεξεργαστή, τις υποδείξεις AI και το υπόλοιπο του προγράμματος. Απαιτείται κάρτα, ακυρώνετε οποιαδήποτε στιγμή από το Dashboard.Ξεκινήστε 7ήμερο trial →
← ΜαθήματαSenior Deep-DivesΕνότητα 2 · CPython Internals & Performancecontextlib.contextmanagerpredict21 / 161
+75 XP
Εργασία
📝 **Ερώτηση:** Προβλέψτε την ακριβή έξοδο. Το \`track\` είναι μια γεννήτρια \`@contextmanager\` που εκτυπώνει \`enter:\` / \`exit:\` και έχει έναν βραχίονα \`εκτός ValueError\`. Το πρώτο μπλοκ \`με\` είναι μια καθαρή εκτέλεση. Το δεύτερο αυξάνει το \`ValueError("oops")\` μέσα στο σώμα — το πρόγραμμα διακόπτεται πριν από την \`print("ολοκληρώθηκε")\` ή το \`with\` το καταπιεί; 📋 Επιλέξτε τη σωστή απάντηση. 💡 **Υπόδειξη: ** Ξαναδιαβάστε την παραπάνω θεωρία εάν δεν είστε σίγουροι.
Πρόβλεψε έξοδο

Διάβασε τον κώδικα προσεκτικά

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

Τι θα εμφανίσει το πρόγραμμα; Γράψε εδώ:

💬 Συζήτηση

Γίνε ο πρώτος — κάνε μια ερώτηση ή μοιράσου μια συμβουλή.
Σύνδεση για να συμμετάσχεις στη συζήτηση. Η ανάγνωση είναι δωρεάν.
Φόρτωση συζήτησης…