이전 부분의 소개를 통해 Python의 반복 가능한 객체와 반복자(Iterable & Iterator)를 쉽게 이해하고 익힐 수 있습니다. 이번 콘텐츠에서는 iterator 관련 내용을 추가적으로 소개하겠습니다.
Iterator 프로토콜Python에서 반복자(Iterator) 객체는 반복자 프로토콜을 함께 구성하는 다음 두 가지 메서드를 지원해야 합니다.1) __iter__():
객체의 이 메서드 반복자 객체 자체를 반환합니다. 이는 for-in 문과 함께 사용되는 컨테이너 및 반복기에 필요합니다. 기본적으로 내부적으로 __iter__() 메서드를 호출하는 내장 iter() 함수를 사용할 수도 있습니다.2)__next__():
반복자에서 다음 항목을 반환합니다. 다른 항목이 없으면 StopIteration 예외가 발생합니다. 내장된 next() 함수를 사용하여 다음 항목을 읽을 수도 있습니다. 이는 기본적으로 __next__() 메서드를 호출합니다. 앞서 말했듯이 목록, 튜플, 사전 및 세트는 모두 반복 가능한 유형입니다. 즉, 반복자를 얻을 수 있는 형식입니다. 예를 살펴보세요. 코드 조각 목록-01입력 결과는 다음과 같습니다.A B C
P y
추적(가장 최근 호출 마지막): 파일 ……,
print(next(listIter)) 위 코드에서는 next() 함수가 4번 호출되는데, 이는 반복자의 항목 수보다 많습니다. 마지막 호출에서는 반복자의 요소가 반복되었기 때문에 StopIteration 예외가 발생했습니다. 또한 수동 반복이 완료된 후 예외가 발생하도록 하려면 예외 처리를 직접 수행해야 합니다. 그렇지 않으면 후속 실행이 더 이상 정상적이지 않습니다. 깨달아야 할 것은 대부분의 시나리오에서 수동으로 next 메서드를 호출할 필요가 없다는 것입니다. Python의 for 루프는 반복자를 반환할 수 있는 모든 객체를 자동으로 순회할 수 있습니다. 즉, for 루프는 Python의 모든 반복 가능한 객체를 반복할 수 있습니다. 예제를 참조하세요. 코드 목록 조각 04 위 코드에서는 for 루프를 사용하여 이전에 정의한 목록을 반복합니다. next() 함수를 수동으로 사용하지 않았으며 StopIteration 예외도 발생하지 않았음이 분명합니다. 이것이 Python의 for 루프의 장점입니다. 이는 뒤에서 우리를 위해 이 모든 것을 처리합니다. 물론, 우리는 이런 식으로 루프 반복을 스스로 처리할 수 있습니다. 이제 for 루프의 자체 버전을 정의하십시오. while 루프를 사용하고 for 루프의 동작을 복제하겠습니다. 여기에서는 이 구현에 필요한 모든 것을 직접 구축합니다. 아래와 같이: 코드 목록 Snippet-05 위 목록에서는 자체 버전의 시뮬레이션된 for 루프를 구현했습니다. 코드에서는 무한 while 루프가 사용됩니다: while True. Try-Exception 블록은 루프 내부에 설정됩니다. try 블록에서 반복자에 대해 __next__() 메서드를 호출하여 다음 요소를 가져옵니다. 호출이 성공하면 요소가 인쇄됩니다. StopIteration 유형의 오류가 발생하면 예외는 Except 블록에서 포착됩니다. Except 블록에서 수행하는 작업은 매우 간단합니다. 우리는 이 루프에서 빠져나왔습니다. 이는 반복자의 끝에 도달했음을 의미합니다. 반복자 프로토콜과 반복자 탐색을 주로 소개하는 이 글은 여기까지입니다. 내용의 텍스트는 길지 않으며 코드와 결합하면 이러한 Python 프로그래밍 지식 포인트를 더 잘 이해하고 숙달하는 데 도움이 될 수 있습니다. |
위 내용은 Python 프로그래밍의 반복자 프로토콜 및 순회 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!