חלק מהצעדים הנדרשים ממפתח המעוניין להיות מפתח מתקדם, דורשים למידה לעומק של לפחות שפת תכנות אחת. בפוסט זה אנסה להסביר מה זה Iterator והיכן משתמשים בו בפייתון.
נתחיל מהבסיס - איטרטור הוא למעשה כל אובייקט שניתן לעבור עליו בלולאה. אני מניח שאת האיטרטורים הבאים אתם בוודאי מכירים: List ו-Tuple.
מי שמנוסה יודע שאפשר גם לבצע לולאה על Dictionary ועל Set למרות שהם Unordered Data Structure שהאובייקטים שבהם לא מקבלים index שזה אומר שלא בהכרח תקבלו את הסדר שתרצו כאשר תעברו עליהם בלולאה.
אבל האם ידעתם שאפשר גם להפוך כל אובייקט לאיטרטור אם תממשו בו פונקציות __iter__ עם __next__?
אז בואו ננסה להבין מה המטרה של כל אחת מהפונקציות האלה.
__iter__ יחזיר לנו את האובייקט עצמו, בתנאי שמימשנו בו את פונקציית __next__ .
__next__ יחזיר לנו את האיבר הבא ברשימה כאשר נבצע לולאה על האובייקט.
כדי לסמן שהגענו לסוף הרשימה, נעלה raise StopIteration.
לצורך ההמחשה, נציג מספר דוגמאות:
אין תגובות:
הוסף רשומת תגובה