Sobes.tech
Junior — Middle

Python'da generatorlarni amalga oshirish va ularni ishlatishda maxsus metodlar (dunder) ning roli nima?

sobes.tech AI

AIdan javob

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

Generatorler, değerler dizisi üzerinde yineleme yapmaya izin veren nesnelerdir; bunları ihtiyaç duyulduğunda hesaplarlar, hemen değil.

  • __iter__() nesnenin yineleyicisini döner (çoğu zaman 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 generator oluşturduğunuzda, Python otomatik olarak bu metodlara sahip bir generator 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.