En iterable er alt du kan loope over (en liste, streng, dict); en iterator er objektet som gjør den faktiske iterasjonen, produserer verdier én om gangen og sporer sin posisjon. Denne distinksionen ligger til grunn for hvordan for løkker fungerer i Python.
De to protokollene
Iterable → has __iter__() → returns an iterator
Iterator → has __next__() → returns the next value (and __iter__ returning itself)
