Python Iterators
تُعدّ المكررات (Iterators) في بايثون واحدة من أهم المفاهيم التي تساعد في التعامل مع تسلسلات البيانات بشكل مرن وفعّال. المكررات هي كائنات تسمح بالتنقل عبر عناصر مجموعة بيانات مثل القوائم أو السلاسل النصية دون الحاجة إلى استخدام الفهارس أو التعقيدات المرتبطة بها. تستخدم المكررات بشكل شائع في الحلقات التكرارية مثل for حيث تقوم بتقديم العنصر التالي في التسلسل في كل دورة.
كيفية عمل المكررات في بايثون
لإنشاء مكرر في بايثون، يجب أن يكون لديك كائن قابل للتكرار مثل قائمة أو سلسلة نصية. جميع الكائنات القابلة للتكرار تحتوي على طريقة مدمجة تُسمى __iter__ تُعيد مكرر الكائن. المكررات نفسها تحتوي على طريقة __next__ التي تعيد العنصر التالي في التسلسل. عندما لا يكون هناك عناصر متبقية، تُطلق استثناء StopIteration لإنهاء التكرار.
مثال بسيط على استخدام المكررات:
my_list = [1, 2, 3, 4]
my_iter = iter(my_list)
print(next(my_iter)) # Output: 1
print(next(my_iter)) # Output: 2
print(next(my_iter)) # Output: 3
print(next(my_iter)) # Output: 4
استخدام المكررات المخصصة
بالإضافة إلى المكررات المدمجة، يمكنك إنشاء مكررات مخصصة لتلبية احتياجات معينة. للقيام بذلك، تحتاج إلى إنشاء فئة تحتوي على الطرق __iter__ و __next__. طريقة __iter__ يجب أن تُعيد الكائن نفسه، بينما طريقة __next__ يجب أن تُعيد العنصر التالي من التسلسل.
إليك مثال على مكرر مخصص يُعيد الأعداد الزوجية فقط حتى قيمة معينة:
class EvenNumbers:
def __init__(self, max):
self.max = max
self.current = 0
def __iter__(self):
return self
def __next__(self):
if self.current > self.max:
raise StopIteration
else:
self.current += 2
return self.current - 2
even_iter = EvenNumbers(10)
for number in even_iter:
print(number) # Output: 0 2 4 6 8 10
باستخدام المكررات المخصصة، يمكنك التحكم الكامل في كيفية الوصول إلى بياناتك وتخصيص السلوك التكراري حسب الحاجة.
