iterable adalah apa pun yang bisa Anda loop (list, string, dict); iterator adalah objek yang melakukan iterasi sebenarnya, menghasilkan nilai satu per satu dan melacak posisinya. Perbedaan ini mendasari cara kerja for loop di Python.
Dua protokol
Iterable → has __iter__() → returns an iterator
Iterator → has __next__() → returns the next value (and __iter__ returning itself)
