Что такое протокол итератора Python?

Существует ли объективное определение? Является ли он реализован как фрагмент исходного кода python? Если да, может ли кто-нибудь создать точные строки кода? Имеют ли все языки, например, собственные протоколы итератора 'for'?

Ответ 1

Он разместил здесь в документах:

Для контейнерных объектов необходимо определить один метод, чтобы обеспечить поддержку итерации:

container.__iter__()

Возвращает объект-итератор. Объект необходим для поддержки протокола итератора, описанного ниже. Если контейнер поддерживает разные типы итераций, могут быть предоставлены дополнительные методы, чтобы специально запросить итераторы для этих типов итераций. (Пример объекта, поддерживающего несколько форм итерации, будет представлять собой древовидную структуру, которая поддерживает как первый, так и первый шаг по пересечению). Этот метод соответствует слову tp_iter структуры типа для объектов Python в Python/C API.

Итераторы сами должны поддерживать следующие два метода, которые вместе образуют протокол итератора:

iterator.__iter__()

Вернуть сам объект итератора. Это необходимо для использования как контейнеров, так и итераторов с инструкциями for и in. Этот метод соответствует слову tp_iter структуры типов для объектов Python в API Python/C.

iterator.next()

Возвращает следующий элемент из контейнера. Если дополнительных элементов нет, вызовите исключение StopIteration. Этот метод соответствует слову tp_iternext структуры типов для объектов Python в API Python/C.