close
- Python kursu
- Orta seviye
- Ders 104/116
- 5 dk
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
# close ile üreteci kapatÖrnek çözüm
# 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ı
g = gen()
print(next(g))
g.____()
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 |