Iterator란?
간단하게 말하자면 데이터 타입의 연속이다. Iterator는 iterator object를 return 하는 __iter__ 메소드 및 __next__ 메소드를 가지고 있어야만 한다. Iterator는 __next__를 통하여 Iterator 안에 있는 그 다음 item으로 넘어가게 되며 더 이상 가능한 item이 Iterator 안에 없다면 StopIteration 예외를 올린다.
iterable이란?
__iter__메소드를 가지고 있거나 __getitem__메소드를 가지고 있는 것들이다. list, tuple, set, dict, unpacking, *args, text file, collections가 이에 해당한다. 보통 이러한 것들은 굳이 Iter()을 통해 Iterator로 만들지 않아도 for문을 통해 다룰 수 있다.
Generator란?
generator iterator를 return 해주는 함수이다. 평범한 함수이지만 for-loop에서 값의 시리즈들을 유용하게 생산해주는 표현인 yield를 가지고 있다. 또한 next() function을 이용하여 자기가 어디있었는지 기억했다가 다음 값을 내뱉어주는 역할을 하고 있다. 특히 yield에 무엇을 지정하든 결과만 바깥으로 전달한다.
전체적으로 정리하자면, Iterator는 __iter__, __next__를구현해야하지만 Generator는 yield만 사용하면 알아서 __iter__, __next__를 구현해준다는 것이다.
'조열심 카테고리 > Python 이것저것' 카테고리의 다른 글
| [Python] 자신만의 Error 만들기 (0) | 2022.05.11 |
|---|---|
| [Python] 제너레이터 내포 표기 (0) | 2022.05.11 |
| [Python] 일급 함수(일급 객체) (0) | 2022.01.04 |
| [ML] 특성 선택 방법론 (0) | 2022.01.02 |
| [Python] 웹크롤링으로 멜론 차트 100 가져오기 (0) | 2021.12.31 |