الكورس

Advertisements

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


الإبلاغ عن خطأ

×

إذا وجد خطأ وتريد الإبلاغ عن هذا الخطأ، أو إذا كنت تريد تقديم اقتراح على شىء معين، فلا تتردد في إرسال بريد إلكتروني إلينا:

[email protected]

شكرًا لك على مساعدتك لنا!

Advertisements