Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

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

Для чего используется ключевое слово yield?

Проверяет понимание ключевого слова yield для создания генераторов и управления потоком выполнения в Python.

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

Ключевое слово yield используется в Python для создания функций-генераторов. Вместо return, который завершает функцию, yield приостанавливает её, сохраняя состояние, и возвращает значение. При следующем вызове функция продолжает выполнение с места остановки. Это позволяет эффективно работать с большими последовательностями данных, не загружая их в память целиком.

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

Что такое yield и зачем он нужен?

Ключевое слово yield в Python используется для создания функций-генераторов. В отличие от обычных функций, которые возвращают одно значение с помощью return и завершаются, генераторы могут возвращать последовательность значений по одному, приостанавливая своё выполнение между вызовами. Это реализует концепцию ленивых вычислений (lazy evaluation), когда данные генерируются по мере необходимости, а не все сразу.

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

Когда функция содержит yield, она становится генератором. При вызове она возвращает объект-итератор, который можно использовать в цикле for или с функцией next(). Каждый раз, когда встречается yield, значение передаётся вызывающему коду, а состояние функции (локальные переменные и точка выполнения) сохраняется. При следующем вызове next() выполнение продолжается с того же места.

Пример кода

def count_up_to(n):
    i = 1
    while i <= n:
        yield i
        i += 1

# Использование генератора
for num in count_up_to(5):
    print(num)  # Выведет: 1 2 3 4 5

# Ручной вызов
gen = count_up_to(3)
print(next(gen))  # 1
print(next(gen))  # 2
print(next(gen))  # 3

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

  • Обработка больших файлов или потоков данных, когда нельзя загрузить всё в память.
  • Создание бесконечных последовательностей (например, чисел Фибоначчи).
  • Реализация конвейеров обработки данных (pipeline).
  • В библиотеках для асинхронного программирования (например, asyncio).

Вывод: yield — мощный инструмент для эффективной работы с последовательностями данных, особенно когда объём данных велик или неизвестен заранее. Используйте генераторы для экономии памяти и улучшения производительности в итеративных задачах.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    4

Навыки

  • Python

    Python

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

#yield

#generator

#iterator

#lazy evaluation

#Python

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию