ExitStack
- Python kursu
- Orta seviye
- Ders 110/116
- 5 dk
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")
# bittiBurada 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
# ExitStack'i içe aktar
# callback ile temizlik zamanlaÖrnek çözüm
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
from contextlib import ____
with ExitStack() as stack:
stack.callback(print, "bitti")
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 |