iterableとの違い> iterable は __iter__ を持つ。 [iterator] は加えて、 __next__を持つ。[python protocol][PythonのIterableを順に追っていく - Qiita https://qiita.com/knknkn1162/items/17f7f370a2cc27f812ee#iterable-iterator]> ここでは、ざっくり簡単にいうと、Iterableと[Iterator]を分離して、データ構造自体と、データの走査方法の役割を分担することで、それぞれの責任を分離でき、[疎結合]が実現できるからです。