Python Generators: Generator Nedir, Ne İşe Yarar

Python Generators

Python, yüksek seviyeli ve kullanıcı dostu bir programlama dilidir. İşte bu kullanıcı dostu dilin arkasındaki güçlerden biri olan “generators” hakkında python generators, generator nedir, ne işe yarar sorularına cevap verecek derinlemesine bir inceleme.

Generator Nedir?

Generator, Python’da veri üretmek ve işlemek için kullanılan özel bir veri türüdür. Temel olarak, bir işlem sırasında bellekte herhangi bir anda tüm veriyi tutmayan ve yalnızca ihtiyaç duyulduğunda veri üreten özel bir fonksiyondur. Bu, büyük veri kümeleriyle çalışırken bellek kullanımını büyük ölçüde azaltabilir ve performansı artırabilir.

Generator Fonksiyonları

Generator tanımlamanın en yaygın yolu olarak “generator fonksiyonları” kullanmaktır. Generator fonksiyonları, bir veya birden fazla “yield” ifadesi içeren özel fonksiyonlardır. İşte bir örnek:

def sayilar():
    yield 1
    yield 2
    yield 3

generator = sayilar()

Yukarıdaki kod, sayılar adında bir generator fonksiyonu tanımlar ve bu fonksiyon içinde üç farklı değer üretir. “yield” ifadesi, değeri üreten ve veri akışını kesmeden devam eden bir anahtar kelimedir.

Generator Nesneleri ve İterasyon

Generator fonksiyonlarından oluşturulan nesneler, birçok Python yapısal öğesi gibi iterasyonu fonksiyonunu destekler. “next()” fonksiyonunu kullanarak her bir değeri sırayla alabiliriz:

print(next(generator))  # 1
print(next(generator))  # 2
print(next(generator))  # 3

Ayrıca, for döngüsü gibi Python’un standart iterasyon araçlarını kullanarak generator nesnelerini kolayca işleyebiliriz:

for num in sayilar():
    print(num)

Sonsuz Generator

Generatorler aynı zamanda sonsuz dizileri modellendirmek için de kullanılabilirler. Örneğin, sonsuz bir Fibonacci dizisi oluşturabiliriz:

Diğer metodlar ile sonsuz diziler oluşturmaya çalıştığımızda bellek kullanımı belirli bir seviyeyi geçtiğinde programımız hata alabilir.

def fibonacci():
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a + b

fib = fibonacci()
for _ in range(10):
    print(next(fib))

Generatorlerin Bellek Verimliliği

Birçok veri işleme senaryosunda, büyük veri kümeleriyle çalışmanız gerekebilir ve bu nedenle bellek verimliliği önemlidir. Generatorler, tüm veriyi önceden bellekte tutmadıkları için büyük veri kümeleri üzerinde çalışırken daha verimlidirler. Bu, programınızın daha hızlı çalışmasına ve daha az bellek tüketmesine imkan sağlar.

Generator bilgilerin tamamını saklamaz. Sadece talep edildiğinde üretir ve döndürür.

Sonuç

Python generatorleri, büyük veri kümeleriyle çalışırken bellek verimliliği sağlayan ve işlem hızını artıran güçlü bir araçtır. Generatorlerin kullanımı, kodunuzu daha temiz ve daha verimli hale getirebilir ve ayrıca iterasyonun sihirli dünyasına daha fazla derinlemesine bir bakış sunar. Bu nedenle, generatorleri öğrenmek ve kullanmak, Python programcıları için önemli bir beceri olmalıdır.

  • List comprehension
  • Pipeline
Daha sonra yazıya dahil olacak konular.

Benzer İçerikler