مفهوم Iterator في لغة البرمجة بايثون وكيفية التعامل معها

اقرأ في هذا المقال


مفهوم الـ Iterator في لغة البرمجة بايثون

تدعم لغة البرمجة بايثون (Python) مفهوم الـمكررات أو ما يسمى ب (Iterator) والذي هو عبارة عن كائن يحتوي على عدد محدد من القيم التي يتم تخزينها بالترتيب بداخل هذا الكائن، حيث تُمكن المستخدم من الوصول إلى القيم الموجودة داخله قيمة تلو الأخرى بنفس الترتيب الذي تم تخزينهم فيه، أي كلما وصلت إلى قيمة فيه تصبح قادر على الوصول إلى القيمة التالية الموضوعة بعدها مباشرةً.

والمكررات في لغة البرمجة بايثون عبارة عن كائنات تقوم بتطبيق بروتوكول يسمى ب (Iterator Protocol)، وهذا البروتوكول يتم تطبيقه من خلال استدعاء الدالتين المجهزتين لذلك وهما (()iter) و (() next).

الفرق بين الـ Iterator  و الـ  Iterable في لغة البرمجة بايثون

عند إنشاء كائن في لغة البرمجة بايثون من الأنواع التالية (list)، (tuple)، (set) أو (dict) فإن المستخدم يقوم بإنشاء كائن نوعه (Iterable)، حيث أنه يستطيع الوصول لقيمة أي عنصر فيهم بشكل مباشر من خلال ذكر رقم الـ (Index) أو الـ (Key) الخاص بالعنصر.

أما كائن ال (Iterator) فإنه لا يمكن الوصول لقيم محددة فيه لأنه بإمكان المستخدم الوصول لقيمه بنفس الترتيب الذي تم تخزينهم فيه، وفي كل مرة يريد المستخدم فيها الحصول على القيمة التالية فيه سيكون عليك استدعاء دالة اسمها (()next) وعند الوصول إلى نهاية الـ (Iterator) أي إلى آخر قيمة فيه و قام المستخدم باستدعاء الدالة (()next) فسترجع للمستخدم الخطأ (Stop Iteration).
وبشكل عام فإن الفرق المهم بين الـكائن من نوع (Iterable) و الـ (Iterator) هو أن هذا الأخير لا يمكن الوصول بشكل مباشر لقيمة محددة فيه.

كيفية التعامل مع ال Iterator في لغة البرمجة بايثون

لحصول على نسخة من كائن نوعه (terable) ككائن نوعه (Iterator) فيتم استخدام دالة جاهزة في بايثون اسمها (()iter)، وفيما يلي مثال على استخدامه:

mytuple = ("apple""banana""cherry") myit = iter (mytuple) print(next(myit)) print(next(myit)) print(next(myit))

ومن الممكن أيضا استخدام الجملة (for) حيث يقوم مفسر لغة البرمجة بايثون بتحويل الحلقة (for) إلى كائن (iterator) و على هذا الأساس فإن الحلقة ترجع لك القيمة التالية في كل دورة.

المصدر: Python IteratorsIterators in PythonEverything You Should Know about Iterables and Iterators in Python as a Data Scientist!


شارك المقالة: