En iterable er alt hvad du kan løkke over (en liste, string, dict); en iterator er det objekt der udfører den faktiske iteration, producerer værdier en efter en og holder styr på sin position. Denne distinktion ligger til grund for hvordan for løkker fungerer i Python.
De to protokoller
Iterable → has __iter__() → returns an iterator
Iterator → has __next__() → returns the next value (and __iter__ returning itself)
