데이터를 처리할 때 반복은 기본이고, 메모리에 들어가지 않는 데이터셋을 검색할 때는 항목들을 느긋하게 가져와야 하고, 한 번에 하나씩 그리고 필요할 때 가져와야 하고 이것을 하는 것이 반복자 패턴입니다.
iter() 내장함수
객체가 iter() 메서드를 구현하는지 확인하고, 이 메서드를 호출해서 반복지를 가져온다.
iter() 메서드가 구현되어 있지 않지만 getitem()이 구현되어 있다면, 파이썬은 인덱스 0에서 시작해서 항목을 순서대로 가져오는 반복지를 생성한다.
이 과정이 모두 실패하면 TypeError가 발생한다.
class Foo:
def __iter__(self):
pass
from collections import abc
issubclass(Foo, abc.Iterable)
객체를 반복하기 전에 그 객체가 반복형인지 명시적으로 검사하는 것은 필요하지 않다. 반복할 수 없는 객체를 반복하려고 시도하면 파이썬이 ‘TypeError: 'c' object is not iterable’ 이라는 명료한 메시지를 답은 예외를 발생시키기 때문이다.
예외를발생시키는것보다깔끔하게 처리할수 있다면 try/except 블록으로 처리하는 것이 좋다. 나중에 반복하기 위해 객체에 저장해두는 경우에는 미리 명시적으로 검사하는 것도 좋다.
에러는 가능한 한 빨리 잡는 것이 좋기 때문이다.
다음 절에서는 반복형과 반복자의 관계를 명시하는 방법을 알아본다.