Python에는 구분하기 애매한 세 가지의 개념이 존재하는데, 바로 IterableSequence, 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

+ Recent posts