옛날 옛적, 가난한 농부들이 사는 거위 마을이 있었다.
어느 날,전지전능한 아키텍쳐는 거위 한마리를 집어들어 임의의 거위 한마리를 집어들어 '황금알을 낳는 거위'로 정했다.
이렇게, 황금알을 낳는 거위를 지정하는 함수가 iter()
이다.
하지만! 아무 거위나 황금알을 낳을 수는 없다.
다양한 거위 중, 특이한 이름을 가진 농부(iterable
)의 거위만이 황금알을 낳는 거위가 될 자격이 되었다.
그 농부의 이름은 매우 길었는데...
줄리어스 오펜하이머 하이브리드 __iter__
였다.
하나씩 알을 낳는 거위는 농부의 이름을 따서 iterator
라고 지어주었다.
황금알을 낳는 거위는 알을 하나씩 낳는다.
__next__()
: 알 낳기이 때, 알을 낳는 행위 __next__()
가 있어야한다. 그래야, 매번 알을 하나씩 낳을 수 있다.
알을 하나씩 낳던 거위가 더 이상 낳을 알이 없을 때, __next()__
는 StopIteration
이라는 예외를 발생한다.
iterator 는 함수형 프로그래밍에서 매우 중요한 특성이다.
하지만 헷갈린다.