Skip to content

Iterator

Итератор - это объект с методами __iter__() и __next__(), который позволяет проходиться по элементам коллекции поочерёдно, по одному за раз. Когда элементов больше нет, __next__() вызывает исключение StopIteration.

Подробный ответ#

Протокол итерации: Объект считается итератором, если он поддерживает два метода:

  • __iter__(self): Возвращает сам объект итератора. Это позволяет итераторам быть итерируемыми.
  • __next__(self): Возвращает следующий элемент из последовательности. Если элементов больше нет, должен вызвать StopIteration.

Использование:#

Цикл for в Python неявно использует итераторы.
Когда вы пишете for item in iterable:, python в начале вызывает iter(iterable), чтобы получить итератор, а затем многократно вызывает next(iterator) до тех пор, пока не будет вызвано StopIteration.

Преимущества итераторов:#

  • Эффективность памяти: Элементы генерируются по требованию (lazy evaluation), а не хранятся все сразу в памяти. Это позволяет работать с огромными или даже бесконечными последовательностями.
  • Универсальность: Единый интерфейс для работы с разными типами коллекций — списками, файлами, генераторами, базами данных.
  • Простота использования: Скрывают сложность последовательного доступа за простым интерфейсом цикла for.