Что такое итератор в Python?

«Что такое итератор в Python?» — вопрос из категории Python, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Python итератор — это объект, реализующий протокол итерации через методы __iter__() и __next__(). Он позволяет последовательно получать элементы из коллекции или потока данных, не загружая их все в память сразу.

Ключевые методы:

  • __iter__() — возвращает сам объект итератора.
  • __next__() — возвращает следующий элемент. Если элементы закончились, вызывает исключение StopIteration.

Пример создания собственного итератора:

class CountDown:
    def __init__(self, start):
        self.current = start

    def __iter__(self):
        return self

    def __next__(self):
        if self.current <= 0:
            raise StopIteration
        num = self.current
        self.current -= 1
        return num

# Использование
for num in CountDown(3):
    print(num)  # Вывод: 3, 2, 1

Практическое применение: Итераторы лежат в основе циклов for, генераторов (yield) и работы с файлами, что позволяет эффективно обрабатывать большие или бесконечные последовательности данных.