iterable คือสิ่งใดก็ตามที่คุณสามารถวนซ้ำได้ (list, string, dict); iterator คือวัตถุที่ทำการวนซ้ำจริง ผลิตค่าทีละค่าและติดตามตำแหน่งของมัน ความแตกต่างนี้เป็นรากฐานของวิธีการทำงานของลูป for ใน Python
สองโปรโตคอล
Iterable → has __iter__() → returns an iterator
Iterator → has __next__() → returns the next value (and __iter__ returning itself)
