Sobes.tech
Junior — Middle

Python'da jeneratörlerin uygulanmasında ve kullanımında özel metodların (dunder) rolü nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Python'da özel metodlar (dunder metodlar) olan __iter__(), __next__(), gibi metodlar, jeneratörlerin ve yineleyicilerin uygulanmasında kilit rol oynar.

Jeneratörler, değerler dizisi üzerinde yineleme yapmaya izin veren nesnelerdir; bunları hemen hesaplamak yerine ihtiyaç duyulduğunda hesaplarlar.

  • __iter__() nesnenin yineleyicisini döner (genellikle nesne kendisidir).
  • __next__() dizinin bir sonraki öğesini döner veya öğeler tükendiğinde StopIteration istisnasını fırlatır.

yield anahtar kelimesiyle bir fonksiyon kullanarak bir jeneratör oluşturduğunuzda, Python otomatik olarak bu metodlara sahip bir jeneratör nesnesi oluşturur.

Dunder metodlar kullanılarak basit bir yineleyici uygulamasına örnek:

class CountUpTo:
    def __init__(self, max):
        self.max = max
        self.current = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self.current >= self.max:
            raise StopIteration
        self.current += 1
        return self.current

for number in CountUpTo(3):
    print(number)

Bu şekilde, dunder metodlar yineleme protokolünü sağlar ve bunlar, döngülerde ve diğer yineleyici nesnelerle çalışan yapılar içinde kullanılmasını mümkün kılar.