Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: iterator, stopiteration, protocol

Что происходит при завершении последовательности в итераторе?

Проверяет понимание механизма завершения работы итераторов.

Короткий ответ

Когда элементы в итераторе заканчиваются, метод __next__() вызывает исключение StopIteration. Это сигнализирует Python (например, циклу for), что перебор завершён. Исключение обрабатывается автоматически.

Длинный ответ

Завершение итератора происходит, когда больше нет элементов для возврата. В этот момент:

  1. Метод __next__() вызывает исключение StopIteration.

  2. Цикл for, генераторы или функции вроде next() перехватывают это исключение и корректно завершают работу.

  3. Дальнейшие вызовы __next__() будут вызывать StopIteration снова.

Пример с ручным вызовом:

numbers = iter([1, 2])
print(next(numbers))  # 1
print(next(numbers))  # 2
print(next(numbers))  # StopIteration

Как обработать исключение:

iterator = iter([])
try:
    	next(iterator)
except StopIteration:
    	print("Итератор пуст!")  # Сработает это

Важно:

  • StopIteration — штатный механизм, а не ошибка.

  • В генераторах (функциях с yield) StopIteration вызывается автоматически при завершении функции.

Вывод:
Исключение StopIteration — стандартный способ сообщить о конце итерации.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    1

  • Сложность:

    5

Навыки

  • Python

    Python

Ключевые слова

#iterator

#stopiteration

#protocol

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.