Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

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

Что такое исключение StopIteration и где оно используется?

Вопрос проверяет знание протокола итерации и того, как Python понимает, что элементы закончились.

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

StopIteration — это исключение, которое сообщает, что итератор больше не может вернуть элементов. Оно возникает, когда генератор завершает работу или итератор исчерпан. Цикл for и многие функции стандартной библиотеки автоматически перехватывают это исключение. Благодаря этому итерация завершается корректно.

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

Python использует единый протокол итерации для всех итерируемых объектов.

Определение: Итератор — объект, который реализует метод __next__() и возвращает следующий элемент или возбуждает StopIteration.

Где возникает StopIteration

  1. В генераторах
    Когда выполнение функции доходит до конца:

def gen():
    yield 1

g = gen()
print(next(g))  # 1
print(next(g))  # StopIteration
  1. В пользовательских итераторах
    Если реализуется __next__, нужно явно возбуждать исключение:

class Counter:
    def __init__(self, limit):
        self.i = 0
        self.limit = limit

    def __next__(self):
        if self.i >= self.limit:
            raise StopIteration
        self.i += 1
        return self.i
  1. Внутри цикла for
    Цикл делает примерно следующее:

# Упрощённая логика
it = iter(obj)
while True:
    try:
        item = next(it)
    except StopIteration:
        break

Практическая роль

StopIteration — это стандартный механизм сигнализации об окончании данных. Благодаря ему любые итераторы, генераторы и контейнеры работают одинаково в for, list(), sum() и других функциях.

Вывод

StopIteration — ключевая часть протокола итерации, позволяющая Python универсально определять, что последовательность закончилась.

  • Аватар

    Python Guru

    Sergey Filichkin

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

Уровень

  • Рейтинг:

    5

  • Сложность:

    5

Навыки

  • Python

    Python

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

#stopiteration

#iterator

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

  • Аватар

    Python Guru

    Sergey Filichkin

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