Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: generator, yield

Можно ли использовать return в генераторе и что произойдет в этом случае?

Вопрос проверяет понимание внутренней механики генераторов и завершения их работы.

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

Да, в генераторе можно использовать return, но он завершает генератор. При этом выбрасывается исключение StopIteration, внутри которого может находиться возвращаемое значение. Обычно это значение не используется при обычной итерации. Генератор просто считается завершённым.

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

Генератор — это функция, которая возвращает значения по одному с помощью yield.

Определение:
Генератор — это функция, которая приостанавливает выполнение и продолжает его при следующем вызове.

1. Поведение return в генераторе

Если написать:

def gen():
    yield 1
    return 42

При итерации:

for x in gen():
    print(x)

Будет выведено только:

1

Значение 42 не выводится.

2. Что происходит внутри

Когда выполняется return:

  1. Генератор завершает работу

  2. Выбрасывается StopIteration

  3. Значение передается в исключении

Можно получить значение так:

g = gen()
next(g)
try:
    next(g)
except StopIteration as e:
    print(e.value)  # 42

3. Где это используется

Иногда применяется:

  1. В корутинах

  2. В внутренних механизмах библиотек

  3. При написании сложных итераторов

Но в обычном коде это встречается редко.

4. Отличие от yield

yield:

  • возвращает значение и приостанавливает выполнение

return:

  • завершает генератор полностью

Вывод

Использовать return в генераторе можно, но он завершает генератор и передает значение через StopIteration. Обычно это нужно только в продвинутых сценариях.

  • Аватар

    Python Guru

    Sergey Filichkin

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

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • Python

    Python

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

#generator

#yield

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

  • Аватар

    Python Guru

    Sergey Filichkin

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