Ένα iterable είναι οτιδήποτε μπορείς να επαναλάβεις (μια λίστα, string, dict)· ένας iterator είναι το αντικείμενο που εκτελεί την πραγματική επανάληψη, παράγοντας τιμές μία προς μία και παρακολουθώντας τη θέση του. Αυτή η διάκριση είναι η βάση του τρόπου λειτουργίας των βρόχων for στην Python.
Τα δύο πρωτόκολλα
Iterable → has __iter__() → returns an iterator
Iterator → has __next__() → returns the next value (and __iter__ returning itself)
