Python에는 구분하기 애매한 세 가지의 개념이 존재하는데, 바로 Iterable
과 Sequence
, Iterator
입니다.
Iterable
Iterable
은 각각의 요소를 하나씩 반환할 수 있는 객체를 말합니다. 이전에 살펴봤던 List와 Tuple, Dictionary와 Set 등이 여기에 속합니다. 정확히는 iterator를 반환하는 빌트인 함수 iter()
를 위한 매직 메소드인__iter__()
를 구현하고 있는 객체를 iterable이라고 부릅니다.
list, tuple, str은 모두 __iter__()를 구현하고 있으므로 iterable이라고 할 수 있습니다. 해당 객체들 대해 __iter__()
메소드를 호출하니 ***_iterator
객체가 반환되었습니다.
Sequence
Sequence는 __len__()
과 __getitem__()
메소드를 가지고 있는 객체입니다.
따라서, list와 tuple 등 Python의 기본 iterable 타입들은 __iter__()
, __len__()
, __getitem__()
메소드를 모두 구현하고 있으므로 sequence이자 iterable입니다.
Iterator
Iterator
는 데이터 스트림을 표현합니다. 내부적으로 매직 메소드 __next__()
가 구현되어 있어, next()
의 인자로 넘겨 다음 데이터를 불러올 수 있다면 iterator라고 말할 수 있습니다.
결론적으로,
- 빌트인 함수
iter()
에 대응되는 매직 메소드__iter__()
가 정의되어 있는 객체를Iterable
이라고 말할 수 있고 - 빌트인 함수
len()
에 대응되는 매직 메소드__len__()
과__getitem__()
이 정의되어 있는 객체를Sequence
라고 말하고 - 빌트인 함수
next()
에 대응되는 매직 메소드__next__()
가 정의되어 있는 객체를Iterator
라고 말할 수 있습니다.
'Python 계열 > Python 레거시 글' 카테고리의 다른 글
[Python] Assert (0) | 2018.07.25 |
---|---|
[Python] Generator (0) | 2018.07.23 |
[Python] Decorator (0) | 2018.07.21 |
[Python] Closure (0) | 2018.07.20 |
[Python] 문자열의 메모리 할당 방식 (0) | 2018.07.19 |