Iterator فى بايثون | Python (__next__ & __iter__)
سنناقش فى هذا الفصل Iterator فى بايثون، ستتعرف على دالة __next__ و __iter__ وكيفية عملهم، مع بعض الأمثلة التوضيحية.
Iterator فى بايثون
iterator (المكرر) في Python هو كائن object يمكن التكرار عليه – مما يعني أنه يمكنك اجتياز جميع القيم، ويقوم هذا الكائن بإرجاع البيانات ، عنصر واحد في كل مرة.
من الناحية الفنية، يجب أن يطبق كائن الـIterator فى Python دالتين:
- ()__iter __ : تقوم بإرجاع كائن iterator نفسه، إذا لزم الأمر ، يمكن إجراء بعض التهيئة.
- ()__next __: تقوم بإجراء العمليات ، ويجب أن تُرجع العنصر التالي في التسلسل.
يسمى الكائن بأنه قابل للتكرار إذا استطعنا الحصول على iterator منه. كما أن الـIterator يحتوي على عدد لا يحصى من القيم.
مثال 1: يمكننا استخدام for للتكرار من خلال كائن قابل للتكرار، كالتالى:
# Iterate the values of a 'list' names = ["Noor", "Hamed", "Mohamed"] for name in names: print(name)
Noor Hamed Mohamed
مثال 2: يمكننا استخدام for أيضًا لعمل تكرار على نص، كالتالى:
# Iterate the characters of a 'string' myName = "Hamed" for character in myName: print(character)
H a m e d
تقوم حلقة for بالفعل بإنشاء كائن iterator وتنفيذ دالة الـ ()next لكل حلقة.
تحتوي جميع الـ classes على دالة تسمى ()__init __ ، والتي تسمح لك بإجراء بعض التهيئة عند إنشاء الـ object. (ستتعلم المزيد عن __init__ في فصل الـ classes و objects).
مثال 3:
class PowTwo: 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 # To prevent the iteration to go on forever for i in PowTwo(5): print(i)
1 2 4 8 16 32
الإبلاغ عن خطأ
×إذا وجد خطأ وتريد الإبلاغ عن هذا الخطأ، أو إذا كنت تريد تقديم اقتراح على شىء معين، فلا تتردد في إرسال بريد إلكتروني إلينا:
info@albashmoparmeg.com
شكرًا لك على مساعدتك لنا!