ایک iterable کوئی بھی چیز ہے جس پر آپ لوپ کر سکتے ہیں (فہرست، سٹرنگ، dict)؛ ایک iterator وہ شے ہے جو حقیقی تکرار کرتی ہے، ایک وقت میں ایک قیمت پیدا کرتی ہے اور اپنی پوزیشن کو ٹریک کرتی ہے۔ یہ فرق Python میں for loops کے کام کرنے کی بنیاد ہے۔
دونوں پروٹوکول
Iterable → has __iter__() → returns an iterator
Iterator → has __next__() → returns the next value (and __iter__ returning itself)
