iterable은 반복할 수 있는 모든 것(list, string, dict)이고, iterator는 실제 반복을 수행하여 값을 한 번에 하나씩 생성하고 위치를 추적하는 객체입니다. 이 구분은 Python에서 for 루프가 동작하는 방식의 기반입니다.
두 가지 프로토콜
iterable → __iter__()를 가짐 → iterator를 반환
iterator → __next__()를 가짐 → 다음 값을 반환 (그리고 자신을 반환하는 __iter__)
for 루프가 실제로 동작하는 방식
x [, , ]:
(x)
it = ([, , ])
:
:
x = (it)
(x)
StopIteration:
