CodeBlanks Logo Icon CodeBlanks

Generator katmanı

Generator ve itertools ile veri akışı kurarsın.

Generator katmanı: yield ile üret

Bu derste uret generator fonksiyonunu yazacaksın. Bu fonksiyon kelimeleri yield ile tek tek üretir:

def uret(words):
    for w in words:
        yield w

for w in uret(words):
    print(w)

Başlangıç kodu önceki çözümleri içerir. Sen uret fonksiyonunu ve for döngüsünü ekleyeceksin. Generator, tüm listeyi belleğe yüklemeden tek tek değer üretir.

Bu, büyük verilerde bellek tasarrufu sağlar.

Uygulama üret generator'ını yaz ve tüket

def uret(words): tanımla, gövdesinde for w in words: yield w yaz. Sonra for w in uret(words): print(w) yaz.

Başlangıç kodu

main.py
# Kelime işleme - kelime listesi
words = ["elma", "armut", "elma"]
print(len(words))
def say(words):
    return len(set(words))
print(say(words))
# uret generator'ını yaz ve tüket

Örnek çözüm

main.py
words = ["elma", "armut", "elma"]
print(len(words))
def say(words):
    return len(set(words))
print(say(words))
def uret(words):
    for w in words:
        yield w
for w in uret(words):
    print(w)

Beklenen çıktı

3
2
elma
armut
elma

Sıradaki adım: dosya I/O

Generator katmanı hazır — kelimeleri tek tek üretebiliyorsun. Sonraki derste dosya I/O katmanı ekleyeceksin: with ile dosya benzeri nesneden okuma. Bu katman, dosyalardan veri okumanın güvenli yolunu gösterecek.

with deyimi kaynağı açar ve blok sonunda otomatik kapatır; böylece kaynak sızıntısı önlenir. Gerçek dosya işlemlerinin temelidir.

Soru ve cevaplar

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

1 yield ne yapar?

  • Döngüyü kırar
  • Hata fırlatır
  • Değer döndürür ve durur Doğru cevap
  • Değişken siler

Açıklama: yield değer üretir ve fonksiyonu duraklatır; bir sonraki çağrıda devam eder.

2 Generator eşleştir

Kavram Anlamı
def üret Generator fonksiyon
yield Değer üretir
for w in üret Tüketim
words Kaynak veri

3 yield anahtar sözcüğünü tamamla

Soru
def uret(words):
    for w in words:
        ____
Cevap
def uret(words):
    for w in words:
        yield w

Açıklama: yield w w değerini üretir ve duraklatır.

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