ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 이터러블(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
Designed by Tistory.