イテラブルはループ可能なもの全般(リスト、文字列、辞書)で、イテレータは実際の反復処理を行うオブジェクトであり、値を 1 つずつ生成し、自身の位置を追跡します。この区別が Python の for ループの動作の基盤になっています。
2 つのプロトコル
text
Iterable → has __iter__() → returns an iterator
Iterator → has __next__() → returns the next value (and __iter__ returning itself)
for ループが実際にどう動くか
python
x [, , ]:
(x)
it = ([, , ])
:
:
x = (it)
(x)
StopIteration:
