iterable je cokoli, na čem můžete iterovat (list, string, dict); iterator je objekt, který provádí skutečnou iteraci, vytvářející hodnoty jednu po druhé a sledující svou pozici. Tento rozdíl je základem toho, jak fungují smyčky for v Pythonu.
Dva protokoly
Iterable → has __iter__() → returns an iterator
Iterator → has __next__() → returns the next value (and __iter__ returning itself)
