> 백엔드 개발 > 파이썬 튜토리얼 > Python 반복자는 어떻게 작동합니까: `__iter__` 및 `__next__` 메서드에 대한 가이드?

Python 반복자는 어떻게 작동합니까: `__iter__` 및 `__next__` 메서드에 대한 가이드?

Susan Sarandon
풀어 주다: 2024-12-18 01:08:11
원래의
689명이 탐색했습니다.

How Do Python Iterators Work: A Guide to the `__iter__` and `__next__` Methods?

Python 반복자의 작동 방식: 종합 안내서

반복자는 Python 프로그래밍의 필수 요소로, 시퀀스를 효율적이고 간결하게 탐색하거나 생성할 수 있습니다. 즉시 가치를 부여합니다. 이 문서에서는 기본 개념과 구현에 중점을 두고 Python에서 기본 반복자를 만드는 방법을 살펴봅니다.

반복자 프로토콜 이해

Python 반복자는 다음과 같이 정의된 특정 프로토콜을 따릅니다. __iter__() 및 __next__() 메서드를 사용합니다. __iter__() 메서드는 반복의 진입점 역할을 하는 반복자 객체를 반환합니다. 반대로 __next__() 메서드는 시퀀스의 다음 값을 반환하거나 더 이상 값이 없을 때 StopIteration 예외를 발생시킵니다.

사용자 정의 반복기 만들기

다음을 고려하세요. 다음은 논리적으로 값을 "포함"하는 예제 클래스입니다.

class Example:
    def __init__(self, values):
        self.values = values
로그인 후 복사

이 클래스에 대한 반복자를 사용하여 __iter__() 및 __next__() 메서드를 정의합니다.

class Example:
    def __init__(self, values):
        self.values = values

    def __iter__(self):
        return self

    def __next__(self):
        if self.values:
            return self.values.pop(0)
        else:
            raise StopIteration
로그인 후 복사

이 예에서 반복자는 값 목록에서 값을 하나씩 팝하여 반환합니다. 목록이 비어 있으면 StopIteration 예외가 발생합니다.

반복자 사용

이제 다음과 같이 반복자를 사용할 수 있습니다.

e = Example([1, 2, 3])

for value in e:
    print("The example object contains", value)
로그인 후 복사

이 코드는 [1, 2, 3] 값을 반복하고 각 값을 console.

더욱 복잡한 반복자

반복자는 인스턴스의 특정 속성이나 값에 액세스하는 것으로 제한되지 않습니다. 또한 값의 출처를 제어하거나 즉시 계산할 수도 있습니다. 예를 들어, 다음 Counter 클래스는 값 범위를 생성합니다.

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

    def __iter__(self):
        return self

    def __next__(self): 
        self.current += 1
        if self.current < self.high:
            return self.current
        raise StopIteration
로그인 후 복사

이 클래스에서 __iter__() 메서드를 호출하여 지정된 범위의 값을 생성하는 반복자를 얻습니다.

결론

Python 반복자는 반복을 위한 강력하고 유연한 메커니즘을 제공합니다. 시퀀스 또는 값 생성. 반복자 프로토콜과 사용자 정의 반복자를 구현하는 방법을 이해하면 개발자가 효율적이고 다양한 코드를 작성할 수 있습니다.

위 내용은 Python 반복자는 어떻게 작동합니까: `__iter__` 및 `__next__` 메서드에 대한 가이드?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿