An iterable yra bet kas, ką galima peržiūrėti (sąrašas, eilutė, žodynas); an iterator yra objektas, kuris atlieka tikrąją iteraciją, produkuodamas reikšmes po vieną ir sekdamas jos padėtį. Šis skirtumas paaiškina, kaip Python veikia for ciklai.
Du protokolai
Iterable → has __iter__() → returns an iterator
Iterator → has __next__() → returns the next value (and __iter__ returning itself)
