Python Iterators
در پایتون، Iterator (تکرارگر) یک شیء است که میتواند یک دنباله از دادهها را یکییکی برگرداند.
مکانیزم اصلی پیمایش لیستها، تاپلها، رشتهها و … بر پایهٔ Iterator کار میکند.
🔹 مفاهیم کلیدی
-
Iterable: هر شیء که میتواند یک Iterator تولید کند (مثل
list
،tuple
،str
،dict
،set
). -
Iterator: شیئی که متدهای
()__iter__
و()__next__
را پیادهسازی کرده باشد.-
()__iter__
خودش را برمیگرداند. -
()__next__
هر بار عنصر بعدی را میدهد و در پایان StopIteration برمیگرداند.
-
🔹 مثال با ساختارهای آماده
هر ساختار قابل تکرار (list
, tuple
, …) را میتوان به Iterator تبدیل کرد:
حلقهٔ
for
دقیقاً همین کار را پشت صحنه انجام میدهد.
🔹 ایجاد Iterator سفارشی
میتوان کلاس سفارشی ساخت که ()__iter__
و ()__next__
داشته باشد:
📌 خروجی:
🔹 تفاوت Iterable و Iterator
🔹 Generators (ژنراتور)
ژنراتور نوع خاصی از Iterator است که با کلمهٔ کلیدی yield
تعریف میشود:
هر بار
yield
فراخوانی میشود، وضعیت تابع حفظ شده و مقدار بعدی در فراخوانی بعدی تولید میشود.
🔹 کاربردهای رایج
-
خواندن فایلهای بزرگ خطبهخط بدون مصرف زیاد حافظه.
-
تولید دنبالههای بیپایان یا بزرگ (مثل اعداد فیبوناچی).
-
پردازش lazy (تنبل) که مقادیر را هنگام نیاز میسازد.
💡 تمرینهای پیشنهادی
-
یک Iterator بساز که اعداد زوج بین 0 تا 20 را برگرداند.
-
ژنراتوری بنویس که دنباله فیبوناچی تا عدد 100 را تولید کند.
-
برنامهای بنویس که یک فایل متنی را خط به خط با Iterator سفارشی بخواند.
✅ خلاصه
-
Iterable شیئی است که میتواند Iterator برگرداند.
-
Iterator متدهای
()__iter__
و()__next__
دارد. -
حلقهٔ
for
در پایتون از این پروتکل استفاده میکند. -
Generators راه سریع و راحت برای ساخت Iteratorها هستند.