1. 개요

1
2
3
list1 = [1, 2, 3, 4, 5]
list1_iter = list1.__iter__()
print(list1_iter.__next__()) # 1이 출력된다.

- iterable 객체의 멤버로서 그 객체의 각 원소를 하나씩 차례대로 순회하여 가리키고자 할 때 사용하는 객체를 iterator 객체라 한다. 파이썬의 모든 iterable 객체는 메서드로 그 객체의 iterator 객체를 리턴하는 __iter__() 메서드를 갖는다.

- 파이썬의 iterator 객체는 __next__() 메서드를 갖는데, 이는 다음 두 기능이 있다.

  • 그 객체가 현재 가리키는 iterable 객체 내 원소를 리턴한다.

  • 그 객체가 그 객체가 현재 가리키던 iterable 객체 내 원소의 다음 순서에 있는 원소를 가리키게 한다.

- iterable 객체를 생성했을 때 그 iterator 객체는 그 iterable 객체의 첫 원소를 가리키고 있다.

2. iter() 함수와 next() 함수

  • iterable 객체에 대해 __iter__() 메서드를 호출하는 대신, 인자로 iterable 객체를 전달하여 파이썬의 시스템 함수인 iter() 함수를 호출하면 그 객체의 iterator 객체가 리턴된다.

  • iterator 객체에 대해 __next__() 메서드를 호출하는 대신, 인자로 iterator 객체를 전달하여 파이썬의 시스템 함수인 next() 함수를 호출하면 그 객체가 가리키던 원소의 값이 리턴되고 그 객체는 기존 가리키던 원소의 다음 원소를 가리킨다.