"Iterator 객체를 생성할수 있는 대상이 되는 것이 iterable 객체이다"
a = [1, 2, 3]
a_iter = iter(a)
type(a_iter)
<class 'list_iterator'>
이렇게 for문을 통해 순회할 수 있는 객체를 Iterable하다고 생각하시면 됩니다. 대표적으로 위에서 잠깐 설명한 시퀀스 타입과 컬렉션 타입의 객체가 있습니다.
그럼 Iterable한 것과 Iterator는 무슨 차이가 있는걸까요?
쉽게 말하자면 Iterable한 것은 next 메소드가 존재하지 않고 Iterator는 존재한다고 생각하시면 됩니다.
즉 next 메소드로 다음 값을 반환할 수 있으면 Iterator, 없으면 Iterable한 객체입니다.
for i in [1, 2, 3]:
print(i, end = ' ')
ir = iter([1, 2, 3])
while True:
try:
i = next(ir)
print(i, end = ' ')
except StopIteration:
break
iterable 객체의 종류와 확인 방법
dir([1, 2]) # ['add', 'class', ...]
hasattr([1, 2], 'iter') # True