Python/파이썬 심화

병행성 - 기본 (1)

monstro 2025. 9. 14. 19:34
728x90
반응형

- 개요

파이썬에서 Iterator반복가능(iterable)한 객체를 의미하고, Generatoriterator를 생성하는 함수를 의미한다

파이썬에서 iterable한 타입의 요소들은 다음과 같은데, collections 모듈의 요소들, Sequence이 있다

 

1) iterable 객체의 예시

text = "qwertyuooo[asdjknzvnm,xc"
print(dir(text))
print(text.__iter__())

 

위와 같이 text라는 이름을 지닌 문자열 인스턴스를 생성하였다

  • dir 메서드를 사용하여 해당 인스턴스의 어트리뷰트를 출력하여 __iter__ 매직 메서드가 포함되는지 확인
  • __iter__ 매직 메서드를 사용하여 해당 인스턴스의 Iterator를 반환

 

첫 번째 실행 결과

 

두 번째 실행 결과

 

실행한 결과는 위와 같다

주의해야 할 점은 다음과 같은데, 모든 IteratorIterable하지만 모든 IterableIterator는 아니다

 

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