Python İterators Kullanımı & Python __iter__ Magic Method

Python İterators Kullanımı & Python __iter__ Magic Method

Tarhi : 27-08-2023 11:03:21 | Yazar : ÇAĞLAR BOSTANCI

Python iterators (yineleyiciler) kendi kendi çağırarak bir methodun ilerlemesi olarak düşüne biliriz. Kullanıdığız herhangi bir nesnede __iter__ magic metodu tanımlıysa bu method iterators olarak çalıştırılabilir. Tabi isterseniz kendinizde bir iterators oluşturabilirsiniz. Bu zamana koda kullanmış olduğumuz for i in liste: yapıları bir iterators yapısıdır. Burada for nesneyi iterator yaparak tek tek ilerlemektedir.

Anlaşıldığı gibi liste veriyi döngüye for döngüsüne sokarak sıralı bir şekilde çalışmasını sağoladı. İter olmasaydı bunlar sıralı olarak gelmeyeceklerdi. Bu sebepten aşağıdaki gibi yazmamız gerekecekti.

Evet şimdi bu iter yapısını kendimiz for olmadan kuralım ve çalıştıralım.

Burada python iter() fonksiyonunu kullanarak yenelenebilir bir hale getirdik ve kaç tane eleman varsa next(yineleyici) ile sıralı bir şekilde ilerleyerek yazdırdık. Bunu isterseniz tuple içinde kullanabilirsiniz.

Eğer üç elemanlı bir liste dördüncü next() fonksiyonunu kullanırsanız StopIteration hatası alırsınız.

Tabi bizler ve for döngüsü liste elamanı içerisinde ne kadar veri olduğunu bilmiyor. for bu nesneyi iter yaptıktan sonra StopIteration hatası alana kadar ilerliyor. Hata geldikten sonra ise yineleme işlemi son buluyor.

Burada tam olarak for döngüsünün çalışma matığını while ile tamamladık.

Şimdi isterseniz bunu bir class haline getirelim range() fonksiyonu gibi bize iki değer arasında sayı üretsin.

Tabi burada nesne tabalı programlada kullanmış olduğumuz magic(Sihirli) metholar ile yapacağız. Burada iter yapısınız __iter__ ve <__next__ ile yapacağız.

Burada iter yapısını nesne tabanlı programlama ile yaptık isterseniz kendi nesnelerinizede iter yapısını getirebilirsiniz. Aynız zamanda yukarıdaki yapmış olduğumuz yapıyı aşağdaki gibi for döngüsü ilede kurabilirsiniz.