Iterable(반복 가능한 객체)이란?
Iterable의 의미와 효과
Iterable은 문자 그대로 반복 가능한 객체를 의미한다.
반복 가능함은 객체를 구성하는 요소가 여러 개이면서, 이 요소들을 한 번에 하나씩 꺼낼 수 있다는 것을 의미한다.
요소를 한 번에 하나씩 꺼낼 수 있다는 보장이 있다면, 굳이 객체의 모든 요소를 미리 메모리에 저장할 필요가 없다.
매번 실행마다 다음 요소에 해당하는 값만 새로 추가해주면 되기 때문이다.
이 경우 메모리를 절약할 수 있다는 장점이 생기게 되고, 이러한 특성을 Lazy Evaluation이라고 한다.
어떤 객체가 Iterable한가?
어떤 객체가 위와 같은 특성을 가지려면(반복 가능하려면) 해당 객체에 __iter__
메소드가 있어야 한다.
따라서 hashattr
과 같은 함수를 사용해서 객체의 iterable 여부를 확인할 수 있다.
hashattr(확인할 객체, "__iter__") # 있다면 해당 객체는 iterable!
Iterator = iter(iterable)
iterable 객체에 iter()
를 적용하기만 하면 iterator(이터레이터)로 변경할 수 있다.
반복 가능한 객체가(아직 반복 X), 실제 한 번에 하나씩 반복될 때의 객체를 바로 이터레이터라고 부른다.
이터레이터는 매번 next()
를 통해 반복이 진행된다.
따라서 iterator는 iter()
와 next()
를 메소드로 가진다.
iterator(이터레이터) 예시
대표적으로 우리가 많이 활용하는 이터레이터로는 for문이 있다.
for문의 실행 과정을 이터레이터를 통해 표현하면 아래와 같다.