마음만은 한량 햄버거 메뉴
반응형
  • 순회가능한 객체
    • 데이터를 하나하나씩 처리할 수 있는 객체들을 순회가능 객체라 칭한다.
    • set, list, dict, tuple, generator 등은 모두 순회가능(Iterable) 객체이다.
    • 어떤 클래스를 Iterable하게 하려면 __iter__와 __next__ 멤버함수를 구현해야한다.

    • 클래스를 Iterable하게 만드는 예시

class MyCustom: def __init__(self, start, end): self.start = start self.end = end def __iter__(self):                # for문에 생성한 인스턴스가 들어갈 경우, iterator가 아니기에 iterator를 요구받는다. return self                 # 요구에 self로 응답하므로써 객체 자기자신을 iterator로 사용하겠다고 최초 한번 선언한다. def __next__(self):              # iterator 선언 후, for문을 돌때마다 next가 호출된다. if self.start >= self.end: # if 조건을 만족하지 않으면 for문에서 제공하는 StopIteration 에러를 발생시켜 종료 raise StopIteration         value = self.start self.start += 1 return value

>>> mycus = MyCustom(0,5)

>>> iterator = iter(mycus)         # 인스턴스 자신을 iterator 선언

>>> next(iterator)                     # next로 for 문과 동일한 동작 수행

1

>>> next(iterator)                     # mycus.__next__()

2

>>> for i in mycus:

print(i)

3

4



https://mingrammer.com/translation-iterators-vs-generators/ => Iterator, Iterable, Generator 설명이 잘 되어있는 글

반응형
블로그카우, 티스토리 애드센스 강의

웹 개발자가 알려주는 수익형 블로그 고속 성장 A to Z

댓글
위쪽 화살표
로딩바