Существует ли объективное определение? Является ли он реализован как фрагмент исходного кода python? Если да, может ли кто-нибудь создать точные строки кода? Имеют ли все языки, например, собственные протоколы итератора 'for'?
Что такое протокол итератора Python?
Ответ 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.