ব্যাখ্যা
ইটারেটর পাইথনে একটি অবজেক্ট যা ইটারেশন প্রোটোকল ইমপ্লিমেন্ট করে। টাপল, লিস্ট, সেট পাইথনে বিল্ট-ইন ইটারেটর বলা হয়। ইটারেশন প্রোটোকলে দুটি ধরনের মেথড রয়েছে।
__iter__() : এই মেথডটি তখন কল হয় যখন আমরা একটি ইটারেটর ইনিশিয়ালাইজ করি এবং এটি অবশ্যই একটি অবজেক্ট রিটার্ন করতে হবে যেটিতে next() বা __next__() (পাইথন ৩-এ) মেথড থাকে।
next() বা __next__() (পাইথন ৩-এ) : এই মেথডটি ইটারেশন সিকোয়েন্স থেকে পরবর্তী এলিমেন্ট রিটার্ন করবে। যখন একটি ইটারেটর for লুপের সাথে ব্যবহার হয়, for লুপ সরাসরি ইটারেটর অবজেক্টের ওপর next() কল করে।
উদাহরণ কোড
# কাস্টম ইটারেটর ক্লাস তৈরি Pow_of_Two: def __init__(self, max = 0): self.max = max def __iter__(self): self.n = 0 return self def __next__(self): if self.n <= self.max: result = 2 ** self.n self.n += 1 return result else: raise StopIteration("Message") a = Pow_of_Two(4) i = iter(a) print(i.__next__()) print(next(i)) print(next(i)) print(next(i)) print(next(i)) print(next(i))আউটপুট
1 2 4 8 16 StopIteration error will be raised