Az iterable bármi, amit végig tud ciklozni (lista, string, dict); az iterator az az objektum, amely az tényleges iterációt végzi, egy-egy értéket előállít és nyomon követi a pozícióját. Ez a megkülönböztetés az alapja annak, hogy a for ciklusok hogyan működnek a Pythonban.
A két protokoll
Iterable → has __iter__() → returns an iterator
Iterator → has __next__() → returns the next value (and __iter__ returning itself)
