CodeBlanks Logo Icon CodeBlanks

ExitStack

ExitStack ile dinamik context yönetimini öğrenirsin.

ExitStack

ExitStack dinamik olarak birden çok context manager'ı yönetir. Kaç tane kullanılacağı önceden bilinmiyorsa idealdir:

from contextlib import ExitStack

with ExitStack() as stack:
    stack.callback(print, "bitti")
    print("içeride")
# bitti

Burada stack.callback(print, "bitti") blok sonunda print("bitti") çağrısını zamanlar. ExitStack, tüm geri çağırmaları ters sırada çalıştırır.

Bu, dinamik temizlik için esnek bir araçtır.

callback ve enter_context

ExitStack iki temel yöntem sunar. callback(fn, *args) blok sonunda bir fonksiyon çağrısı zamanlar. enter_context(cm) bir context manager'ı ExitStack'e ekler:

with ExitStack() as stack:
    stack.callback(print, "temizlik")
    f = stack.enter_context(open("dosya.txt"))

Temizlik, eklenme sırasının tersinde yapılır — son eklenen ilk kapatılır. Bu, birden çok kaynağın güvenli yönetimini sağlar.

Bu, dinamik kaynak yönetimi için standarttır.

Uygulama ExitStack ile callback zamanla

from contextlib import ExitStack yaz. with ExitStack() as stack: bloğu içinde stack.callback(print, "bitti") ve print("içeride") yaz.

Başlangıç kodu

main.py
# ExitStack'i içe aktar
# callback ile temizlik zamanla

Örnek çözüm

main.py
from contextlib import ExitStack

with ExitStack() as stack:
    stack.callback(print, "bitti")
    print("içeride")

Beklenen çıktı

içeride
bitti

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 ExitStack içe aktarımını tamamla

Soru
from contextlib import ____

with ExitStack() as stack:
    stack.callback(print, "bitti")
Cevap
from contextlib import ExitStack

with ExitStack() as stack:
    stack.callback(print, "bitti")

Açıklama: ExitStack contextlib modülünden gelir.

2 ExitStack callback'leri hangi sırada çalıştırır?

  • Rastgele
  • Eklenme sırasında
  • Ters sırada Doğru cevap
  • Yalnızca ilk

Açıklama: ExitStack callback'leri ters sırada (LIFO) çalıştırır.

3 ExitStack kavramlarını eşleştir

Kavram Anlamı
ExitStack Dinamik yönetici
callback Temizlik zamanlar
enter_context CM ekler
ters sıra Kapanış düzeni

Orta seviye bölümündeki tüm dersler