Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: __next__, StopIteration, iterator protocol, Python iteration

Что делает метод __next__() и когда он должен выбрасывать StopIteration?

Проверяет понимание работы итерационного протокола в Python, включая метод __next__() и условие остановки итерации.

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

Метод __next__() возвращает следующий элемент итератора при каждом вызове. Когда элементы заканчиваются, он должен выбросить исключение StopIteration, чтобы сигнализировать об окончании итерации. Это основа работы циклов for и других итерационных конструкций в Python.

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

Что такое __next__() и StopIteration?

Метод __next__() является частью итерационного протокола в Python. Он определяет, как объект-итератор возвращает элементы по одному за раз. Когда все элементы исчерпаны, метод должен выбросить исключение StopIteration, чтобы сообщить вызывающему коду, что итерация завершена.

Как это работает?

Любой объект, который реализует методы __iter__() и __next__(), называется итератором. Метод __iter__() возвращает сам итератор, а __next__() возвращает следующий элемент. Когда элементы заканчиваются, __next__() выбрасывает StopIteration. Это позволяет использовать объект в цикле for или вручную вызывать next().

Пример реализации

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

    def __iter__(self):
        return self

    def __next__(self):
        if self.current >= self.limit:
            raise StopIteration
        value = self.current
        self.current += 1
        return value

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

Где применяется?

Итераторы широко используются в Python для работы с последовательностями, файлами, генераторами и пользовательскими коллекциями. Они позволяют эффективно обрабатывать большие объёмы данных без загрузки всего в память.

Вывод

Метод __next__() и исключение StopIteration являются основой итерационного протокола Python. Их правильная реализация необходима для создания собственных итераторов, которые могут быть использованы в циклах и других итерационных контекстах.

  • Аватар

    Python Guru

    Sergey Filichkin

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

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • Python

    Python

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

#__next__

#StopIteration

#iterator protocol

#Python iteration

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

  • Аватар

    Python Guru

    Sergey Filichkin

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