순회 가능한 객체(리스트, 튜플, 문자열)의 요소에 순서대로 접근할 수 있는 객체
for문에서 지정한 순회 가능한 객체에서 이터레이터 객체를 가져옴(객체의 첫번째 요소를 가리킴)
이터레이터 안의 __next__() 메서드를 실행(현재 이터레이터가 가리키는 객체의 요소를 반환하고 다음 요소로 이터레이터를 옮김)
for구문은 StopIteration 예외를 만날 때까지 반복
>>> for element in [1, 2, 3]:
print(element)
1
2
3
>>> for element in (1, 2, 3):
print(element)
1
2
3
>>> for key in {'one':1, 'two':2}:
print(key)
two
one
>>> for char in "123": <<<문자열의 한 문자씩 순회
print(char)
1
2
3
__next__()는 내장 함수 next()를 사용해 실행할 수도 있음
>>> s = 'abc'
>>> it = iter(s)
>>> it <<<이터레이터 객체
<str_iterator object at 0x103750450>
>>> next(it) <<<next 함수는 iterator가 가리키는 값을 반환 후 다음 요소를 가리킴
'a'
>>> next(it)
'b'
>>> it.__next__()
'c'
>>> next(it) <<<요소의 끝 부분에서 __next__()를 실행시 StopIteration 예외 발생
Traceback (most recent call last):
File "<pyshell#138>", line 1, in <module>
next(it)
StopIteration