728x90
반응형
- 개요
파이썬에서 Iterator는 반복가능(iterable)한 객체를 의미하고, Generator는 iterator를 생성하는 함수를 의미한다
파이썬에서 iterable한 타입의 요소들은 다음과 같은데, collections 모듈의 요소들, Sequence등이 있다
1) iterable 객체의 예시
text = "qwertyuooo[asdjknzvnm,xc"
print(dir(text))
print(text.__iter__())
위와 같이 text라는 이름을 지닌 문자열 인스턴스를 생성하였다
- dir 메서드를 사용하여 해당 인스턴스의 어트리뷰트를 출력하여 __iter__ 매직 메서드가 포함되는지 확인
- __iter__ 매직 메서드를 사용하여 해당 인스턴스의 Iterator를 반환


실행한 결과는 위와 같다
주의해야 할 점은 다음과 같은데, 모든 Iterator는 Iterable하지만 모든 Iterable이 Iterator는 아니다
2) iterable한 객체의 생성(iter())과 사용(next())
words = iter(text)
while True:
try:
print(next(words))
except StopIteration:
break
파이썬에서 iterable한 객체를 생성하기 위해서는 iter함수를 사용한다
iterable한 객체를 사용하기 위해서는 next 함수를 사용하는데, 사용된 데이터를 다시 사용하는 것은 불가능하다

실행 결과는 위와 같다
while문을 돌면서 iterable한 객체인 word로부터 next 함수를 사용하여 값을 하나씩 추출한다
값이 전부 추출되면 더는 반복할 수 없으므로 StopIteration 에러가 발생하여 while문을 중단한다
3) iterable한 객체인지 확인
from collections import abc
print(dir(text))
print(hasattr(text, '__iter__'))
print(isinstance(text, abc.Iterable))
인스턴스가 iterable한지 확인하는 방법은 위와 같다
- dir 함수를 통해 인스턴스의 어트리뷰트에 __iter__ 매직 메서드가 포함되었는지 확인
- hasattr 함수를 통해 해당 인스턴스의 어트리뷰트에 __iter__ 매직 메서드가 포함되었는지 확인
- 해당 인스턴스가 collections 모듈의 Iterable 추상 클래스를 상속받았는지 확인


실행 결과를 확인해보면 text 객체는 iterable한 것을 확인할 수 있다
728x90
반응형
'Python > 파이썬 심화' 카테고리의 다른 글
| 제너레이터 + itertools 모듈 (0) | 2025.09.28 |
|---|---|
| 병행성 - 기본 (2) (0) | 2025.09.14 |
| 데코레이터 (0) | 2025.09.02 |
| 클로저 (2) (0) | 2025.08.21 |
| 클로저 (1) (0) | 2025.08.18 |