-
이터러블(iterable) & 이터레이터(iterator) 차이Computer Science🖥️/Python 2021. 5. 31. 20:38
- 반복가능한 객체 (iterable)
: 요소(element)가 여러 개 들어있고, 한 번에 하나씩 꺼낼 수 있는 객체
ex) 문자열, 리스트, 딕셔너리, 세트
- 객체가 iterable 인지 알아보는 방법
: 객체의 내장함수에 __iter__이 존재하면 iterable 한 객체임.
#객체의 내장함수 확인해 보는 방법
>>> dir(객체)
이 리스트에서 __iter__() 호출하면 이터레이터(iterator)가 나온다.
즉, iterable 객체의 __iter__()를 호출하면 그 객체의 iterator를 생성한다.
- iterator
: 내장함수로 __next__()를 갖고 있으며 이 함수로 객체의 다음 요소를 불러낼 수 있다.
리스트의 이터레이터를 변수에 저장한 뒤에 __next__메서드를 갖고 있는지 확인.
위에 없던 __next__() 있음 즉, 반복 가능한 객체에서 __iter__메소드로 이터레이터를 얻어낸 뒤엔 __next__메서드 호출이 가능하다는 것
- for 와 iterable 객체
- range()함수를 사용했을 경우 동작 설명
1) range 에서 __iter__로 이터레이터를 얻는다.
2) 반복할 때마다 이터레이터에서 __next__로 숫자를 꺼내 i에 저장하고, 지정된 숫자가 되면 StopIteration 을 발생시켜 반복을 끝낸다.
for 안의 range() 동작 설명 이처럼 반복 가능한 객체(iterable)과 iterator가 분리되어 있지만 클래스에 __iter__, __next__메소드를 모두 구현하면 iterator을 만들 수 있습니다.
특히 이 두가지 메서드를 가진 객체를 이터레이터 프로토콜(iterator protocol)을 지원한다고 말합니다.
--
참고
https://dojang.io/mod/page/view.php?id=2405
'Computer Science🖥️ > Python' 카테고리의 다른 글
sort, sorted 의 차이 (0) 2021.08.01 파이썬 배열(array)은 list (0) 2021.06.12 파이썬 자료형 - 숫자형, 문자열 (0) 2021.01.28