Python 프로그래밍에서는 루프 처리가 불가피하며, 여기에는 반복 가능한 객체와 반복기(Iterable & Iterator)라는 두 가지 중요한 개념이 포함됩니다. 이 반복이라는 주제를 실제 프로그래밍에 이해하고 적용할 수 있도록 2~3부로 나누어 소개하겠습니다. 이 글은 첫 번째 글입니다.
반복 가능한 객체(Iterable)는 한 번에 한 멤버를 반환할 수 있는 객체를 의미합니다. 반복 가능한 객체의 예로는 모든 시퀀스 유형(예: list, str 및 tuple)과 일부 비시퀀스 유형(예: dict, 파일 객체 및 __iter__() 메서드 또는 __getitem__을 구현하도록 정의한 클래스의 모든 객체가 포함됩니다. () 메소드에 의해 지정된 의미론 - 및 반복 프로토콜(자세한 내용은 여기 참조).
Iterable 객체는 for 루프 및 시퀀스가 필요한 기타 장소(예: zip(), map(), filter()...)에서 사용할 수 있습니다. 반복 가능한 객체가 내장 함수 iter()에 매개변수로 전달되면 해당 객체의 반복자를 반환합니다. 이 반복자는 값 세트의 일회성 순회에만 적합합니다. 반복 가능한 객체로 작업할 때 일반적으로 iter()를 호출하거나 반복자 객체를 직접 처리할 필요가 없습니다. 이는 루프 중에 반복자를 보유하는 데 사용되는 이름 없는 임시 변수를 생성하는 for 문을 사용하여 자동으로 수행됩니다.
간단히 말하면, 반복 가능한 객체는 __iter__() 메서드 또는 __getitem__() 메서드를 구현하는 모든 클래스 객체입니다.
Iterator(Iterator)는 데이터 흐름을 나타내는 객체를 말합니다. 반복자의 __next__() 메서드를 반복적으로 호출하거나 내장 함수 next()에 전달하면 스트림에 연속된 항목이 반환됩니다. 더 이상 사용할 수 있는 데이터가 없으면 StopIteration 예외가 발생합니다. 이 시점에서 반복자 객체는 소진되었으며 __next__() 메서드에 대한 추가 호출은 StopIteration을 다시 발생시킵니다. 반복자에는 반복자 객체 자체를 반환하는 __iter__() 메서드가 있어야 하므로 모든 반복자는 반복 가능하며 다른 반복 가능 객체를 허용하는 대부분의 장소에서 사용할 수 있습니다.
간단히 말하면 반복자는 두 가지 반복기 프로토콜 메서드인 __next__() 및 __iter__()를 구현하는 데이터 흐름 개체입니다.
주목할만한 예외는 여러 번 반복을 시도하는 코드입니다(동일한 반복자를 여러 번 사용). 컨테이너 객체(예: 목록)는 iter() 함수에 전달되거나 for 루프에서 사용될 때마다 새로운 반복자를 생성합니다. 반복자로 이것을 시도하면 이전 반복 중에 사용된 소진된 반복자 객체가 반환되어 빈 컨테이너처럼 보이게 됩니다. 따라서 코드를 작성할 때 이러한 상황을 피하십시오.
또한 내장 함수 iter()(배후에서 __iter__() 메서드를 호출함)가 반복자 개체를 반환한다는 점을 이해해야 합니다. 그래서 우리는 말할 수 있습니다. iterable은 반복자를 반환하는 객체입니다.
반복자와 반복 가능한 객체를 더 잘 이해하기 위해 설명과 코드 예제를 통해 다음 핵심 사항을 추가로 소개하겠습니다.
위 내용은 Python 프로그래밍: 반복 가능한 객체 및 반복자(Iterable & Iterator)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!