Μετάβαση στο κύριο περιεχόμενο
🔒 Λειτουργία προεπισκόπησης. Τα πρώτα δεκαπέντε μαθήματα Foundations είναι δωρεάν· αυτό είναι Pro. Ξεκινήστε ένα 7ήμερο trial για να ξεκλειδώσετε τον επεξεργαστή, τις υποδείξεις AI και το υπόλοιπο του προγράμματος. Απαιτείται κάρτα, ακυρώνετε οποιαδήποτε στιγμή από το Dashboard.Ξεκινήστε 7ήμερο trial →
← ΜαθήματαSenior Deep-DivesModule 7 · Memory, GC, modern typingcontextlib.ExitStack — dynamic context-manager compositionpredict120 / 161
+150 XP
Εργασία
📝 **Εργασία:** Προβλέψτε την ακριβή έξοδο. Τρεις ένθετοι διαχειριστές περιβάλλοντος ωθούνται σε ένα ExitStack, μετά εκτελείται το σώμα και μετά το ExitStack εξέρχεται με σειρά LIFO. Η λίστα συμβάντων καταγράφει τη σειρά των __enter__, body work και __exit__. 📋 Υλοποιήστε την παραπάνω λειτουργία. Οι δοκιμές εκτελούνται αυτόματα. 💡 **Υπόδειξη:** Ξαναδιάβασε τη θεωρία αν κολλήσεις.
Πρόβλεψε έξοδο

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

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)

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

💬 Συζήτηση

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