CodeBlanks Logo Icon CodeBlanks

close

generator.close() ile kapatmayı öğrenirsin.

close metodu

g.close() çağrısı, üreteci sonlandırır. Üreteç beklediği yield noktasında GeneratorExit istisnası alır; bu istisnayı try/except ile yakalayarak temizlik yapabilirsin.

Örnek: try:\n yield 1\nexcept GeneratorExit:\n print("kapandi"). g.close() çağrısı GeneratorExit fırlatır ve except bloğu çalışır. Bu, üretecin sonlanırken kaynağı serbest bırakması için kullanılır; dosya, ağ bağlantısı gibi kaynaklarda kullanışlıdır.

Temizlik için ideal

close(), üreteç sonlanırken temizlik yapmak için idealdir. Açılan dosyaları kapatma, ağ soketlerini serbest bırakma ya da tamponu boşaltma gibi işler GeneratorExit yakalanarak yapılır.

Ancak GeneratorExit yakalandıktan sonra yield çağrısı yapılmamalıdır; aksi halde RuntimeError fırlar. Temizlik yapıp istisnayı yeniden fırlatmamak da doğru davranıştır; üreteç sessizce sonlanır.

Uygulama close ile üreteci kapat

def gen(): fonksiyonunu tanımla. Gövdede try: bloğu aç; içine yield 1 ve yield 2 yaz. except GeneratorExit: bloğu aç; içine print("kapandi") yaz. g = gen() ile örnek oluştur, print(next(g)) ile ilk değeri yazdır ve g.close() ile üreteci kapat.

Başlangıç kodu

main.py
# close ile üreteci kapat

Örnek çözüm

main.py
# close ile üreteci kapat
def gen():
    try:
        yield 1
        yield 2
    except GeneratorExit:
        print("kapandi")

g = gen()
print(next(g))
g.close()

Beklenen çıktı

1
kapandi

Soru ve cevaplar

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

1 close() ne fırlatır?

  • GeneratorExit Doğru cevap
  • StopIteration
  • ValueError
  • TypeError

Açıklama: close() üretece GeneratorExit fırlatır.

2 close çağrısı

Soru
g = gen()
print(next(g))
g.____()
Cevap
g = gen()
print(next(g))
g.close()

Açıklama: close() üreteci sonlandırır.

3 close parçalarını eşleştir

Kavram Anlamı
close() Sonlandırma
GeneratorExit İstisna
try/except Yakalama
cleanup Temizlik

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