تکرارگرها (Python Iterators)
تکرارگرها: پشتپرده حلقهها (Iterators) 🔄⚙️
تکرارگر (Iterator) شیئی است که حاوی تعداد قابل شماری از مقادیر است. تکرارگر شیئی است که میتوان روی آن پیمایش کرد (Iterate)، به این معنی که میتوانید از تمام مقادیر آن یکی پس از دیگری عبور کنید.
۱. تفاوت Iterable و Iterator
لیستها، تاپلها، دیکشنریها و مجموعهها همگی اشیاء قابل پیمایش (Iterable) هستند. آنها کانتینرهایی هستند که میتوانید از آنها یک "تکرارگر" بگیرید.
۲. متدهای __iter__() و __next__()
یک شیء برای اینکه تکرارگر باشد باید پروتکل تکرار را پیادهسازی کند که شامل دو متد است:
__iter__(): این متد خودِ شیء تکرارگر را باز میگرداند.__next__(): این متد مقدار بعدی در توالی را باز میگرداند.
class MyNumbers:
def __iter__(self):
self.a = 1
return self
def __next__(self):
x = self.a
self.a += 1
return x
myclass = MyNumbers()
myiter = iter(myclass)
۳. توقف تکرار (StopIteration)
در مثالهای بالا، تکرار برای همیشه ادامه مییابد مگر اینکه راهی برای توقف تعریف کنیم. در متد __next__، اگر به پایان دادهها رسیدید، باید استثنای StopIteration را صادر کنید.
__next__ را فراخوانی میکند تا زمانی که با خطای StopIteration مواجه شود.
تمرینهای عملی
برای تثبیت یادگیری این درس تمرینهای زیر را حل کنید
یک لیست به نام mytuple = ('apple', 'banana', 'cherry') دارید. با استفاده از تابع iter() یک تکرارگر از آن بسازید و نام آن را myit بگذارید. سپس اولین آیتم را با استفاده از تابع next() چاپ کنید.
mytuple = ('apple', 'banana', 'cherry')
myit = iter(mytuple)
print(next(myit))
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.