iterable هو أي شيء يمكنك التكرار عليه (قائمة، سلسلة نصية، dict)؛ وiterator هو الكائن الذي يقوم بالتكرار الفعلي، مُنتجًا القيم واحدة تلو الأخرى ومتتبعًا موقعه. يكمن الفرق وراء كيفية عمل حلقات for في Python.
البروتوكولان
Iterable → has __iter__() → returns an iterator
Iterator → has __next__() → returns the next value (and __iter__ returning itself)
