프로그래밍 언어/Python

Python 반복 함수를 생성하는 방법

Rateye 2021. 10. 8. 10:34
728x90
반응형
질문 : 기본 Python 반복기 빌드

파이썬에서 반복 함수 (또는 반복기 객체)를 어떻게 생성할까요?

답변

파이썬의 반복자 객체는 반복자 프로토콜을 __iter__()__next__() 두 가지 메서드를 제공한다는 것을 의미합니다.

  • __iter__ 는 반복기 객체를 반환하며 루프 시작시 암시 적으로 호출됩니다.
  • __next__() 메서드는 다음 값을 반환하며 각 루프 증분에서 암시 적으로 호출됩니다. 이 메서드는 반환 할 값이 더 이상 없을 때 StopIteration 예외를 발생시킵니다.이 예외는 반복을 중지하기 위해 반복 구조를 통해 암시 적으로 캡처됩니다.

 

다음은 카운터의 간단한 예입니다.

class Counter:
    def __init__(self, low, high):
        self.current = low - 1
        self.high = high

    def __iter__(self):
        return self

    def __next__(self): # Python 2: def next(self)
        self.current += 1
        if self.current < self.high:
            return self.current
        raise StopIteration


for c in Counter(3, 9):
    print(c)

다음과 같이 인쇄됩니다.

3
4
5
6
7
8

이전 답변에서 다룬 것처럼 생성기를 사용하여 작성하는 것이 더 쉽습니다.

def counter(low, high):
    current = low
    while current < high:
        yield current
        current += 1

for c in counter(3, 9):
    print(c)

인쇄 된 출력은 동일합니다. 내부적으로 생성기 객체는 반복기 프로토콜을 지원하고 Counter 클래스와 거의 유사한 작업을 수행합니다.

David Mertz의 기사 인 Iterators and Simple Generators 는 꽤 좋은 소개입니다.

출처 : https://stackoverflow.com/questions/19151/build-a-basic-python-iterator
728x90
반응형