CodeBlanks Logo Icon CodeBlanks

with deyimi

with deyiminin nasıl çalıştığını öğrenirsin.

with deyimi

with deyimi bir kaynağı açar, kullanır ve otomatik kapatır. Blok nasıl sonlanırsa sonlansın — hata dahil — kapatma her zaman çalışır:

with open("dosya.txt") as f:
    içerik = f.read()
# f otomatik kapatıldı

Burada open dosyayı açar; with bloğu bitince dosya otomatik kapanır. finally yazmaya gerek yoktur. Bu, kaynak sızıntısını önler.

Dosya, veritabanı bağlantısı ve kilit gibi kaynaklarda standarttır.

as ile kaynağa ad ver

with ... as kalıbı kaynağa bir ad verir. Bu ad blok içinde kullanılır:

with open("dosya.txt") as f:
    print(f.read())

Burada f dosya nesnesini tutar. Blok bitince f otomatik kapanır; f.close() çağrılmasına gerek yoktur. Bu kalıp dosya işlemlerinde en sık kullanılan yöntemdir ve kaynak sızıntısını önler.

Uygulama Basit context manager kullan

Kaynak sınıfı zaten tanımlı. with Kaynak(): bloğu içinde print("içeride") yaz.

Başlangıç kodu

main.py
class Kaynak:
    def __enter__(self):
        print("açtı")
        return self
    def __exit__(self, *args):
        print("kapattı")

# with bloğu aç ve içeride yaz

Örnek çözüm

main.py
with Kaynak():
    print("içeride")

Beklenen çıktı

açtı
içeride
kapattı

Soru ve cevaplar

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

1 with bloğu ne garantiler?

  • Kod daha hızlı çalışır
  • Hata fırlatılmaz
  • Kaynak her zaman kapatılır Doğru cevap
  • Değişkenler silinir

Açıklama: with bloğu hata olsa da kaynağı kapatır.

2 with deyimini tamamla

Soru
____ Kaynak():
    print("içeride")
Cevap
with Kaynak():
    print("içeride")

Açıklama: with Kaynak() bir context manager'ı başlatır.

3 with kavramlarını eşleştir

Kavram Anlamı
with Bloğu başlatır
as Kaynağa ad verir
__enter__ Açılış
__exit__ Kapanış

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