Python’da Generator Functions

Bünyamin Ergen
2 min readAug 8, 2023

--

Python dünyasında elimizdeki güçlü araçlardan biri jeneratör fonksiyonudur. Peki, tam olarak nedir ve neden kullanmak isteriz?

Generator Function Nedir?

Generator Functions, Generatorolarak bilinen lazy bir yineleyici döndüren özel bir fonksiyon türüdür. Standart fonksiyonların aksine tek bir sonuç döndürmez; yield anahtar kelimesi kullanarak bir dizi sonuç üretir. Her öğeyi hesaplayıp hafızada saklamak yerine, bunları teker teker ve anında üretir.

Generator Function

Generator Function Nasıl Oluşturulur?

Bir generator function oluşturmak için, normal bir fonksiyonla yapacağınız gibi def anahtar kelimesini kullanın. Ancak sonuçları return anahtar kelimesi ile döndürmek yerine yield kullanın:

def basit_jenerator():
yield 1
yield 2
yield 3

Değerleri almak için next() fonksiyonunu kullanabilir veya jeneratörün üzerinden döngü ile geçebilirsiniz:

gen = basit_jenerator()
print(next(gen)) # 1
print(next(gen)) # 2
print(next(gen)) # 3

Generator Function Kullanmanın Avantajları

  1. Memory Efficiency: Generator’lar, değerleri anında ürettikleri için hafıza dostudurlar. Bu, özellikle büyük veri kümeleri veya akış verileriyle çalışırken onları son derece kullanışlı kılar.
  2. Temiz ve Okunabilir Kod: Jeneratörler, özellikle döngüler ve veri dönüşümleri gibi işlemlerde kodu çok daha okunabilir kılar.
  3. Esneklik: Generator’larla, tüm asal sayıları üreten bir jeneratör gibi, kesin bir sonu olmayan sıralamaları bile modelleyebilirsiniz.

Pratik Uygulamalar

  • Dosya İşleme: Büyük dosyaları satır satır okurken, tüm dosyayı hafızaya yüklemek yerine bir jeneratör kullanabilirsiniz.
  • Veri Akışı: Eğer bir dış kaynaktan veya API’den veri akıtıyorsanız ve bunu anında işlemeniz gerekiyorsa, jeneratörler hayat kurtarıcı olabilir.
  • Lazy Evaluations: Tüm veriyi hemen almanıza gerek olmadığı ve gerektiğinde alıp işlemeyi tercih ettiğiniz durumlar için jeneratörler idealdir.

Sonuç

Python’daki Generator fonksiyonları, hafızayı boğmadan veya kod okunabilirliğini zorlamadan veri akışlarını, büyük veri kümelerini ve karmaşık işlemleri ele almanın güçlü ve etkili bir yolunu sunar. Onları anlayarak ve kullanarak kodunuzu optimize edebilir ve daha geniş bir programlama zorluğu yelpazesine hitap edebilirsiniz.

--

--

No responses yet