Какова роль и основные функции итератора в языке Python?
Ответ от нейросети
sobes.tech AI
Что хотят услышать интервьюеры:
Итератор в Python нужен для последовательного получения элементов по одному, без необходимости хранить всю логику обхода снаружи. Он скрывает внутреннее устройство коллекции и позволяет работать с любым объектом, по которому можно пройти в цикле for. Обычно важно упомянуть, что итератор сам управляет состоянием обхода и завершает его через исключение StopIteration.
Определение:
Итератор — это объект, который реализует протокол итерации: метод __iter__() возвращает сам итератор, а метод __next__() возвращает следующий элемент последовательности. Когда элементы заканчиваются, __next__() вызывает StopIteration. Благодаря этому можно универсально обходить списки, строки, файлы, генераторы и собственные объекты.
Пример использования:
numbers = iter([10, 20, 30])
print(next(numbers)) # 10
print(next(numbers)) # 20
print(next(numbers)) # 30
# print(next(numbers)) # StopIteration
for x in [10, 20, 30]:
print(x)
Пояснение кода:
В примере iter([10, 20, 30]) создаёт итератор из списка. Каждый вызов next(numbers) возвращает следующий элемент, пока данные не закончатся. В цикле for Python делает то же самое автоматически: получает итератор, вызывает next() и останавливается при StopIteration. Код здесь нужен, потому что роль итератора лучше всего видна на практическом обходе последовательности.
Ключевые моменты:
- Итератор выдаёт элементы по одному и хранит текущее состояние обхода.
- Протокол итератора основан на методах
__iter__()и__next__(). - Завершение обхода обозначается исключением
StopIteration. - Цикл
forв Python работает через итераторы автоматически. - Итераторы удобны для ленивой обработки данных и экономии памяти.
- Не каждый итерируемый объект является итератором: список и строка итерируемы, но итератором становится результат
iter(...).