Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

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

Для чего используется оператор yield?

Вопрос проверяет понимание генераторов и ленивых вычислений в Python, что важно для оптимизации памяти и работы с потоками данных.

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

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

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

Что такое yield и как он работает?

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

Пример использования

Рассмотрим простой пример генератора чисел Фибоначчи:

def fibonacci(limit):
    a, b = 0, 1
    while a < limit:
        yield a
        a, b = b, a + b

# Использование
for num in fibonacci(100):
    print(num)  # Выведет: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89

Здесь yield позволяет генерировать числа по одному, не создавая список всех значений. Это экономит память, особенно при работе с большими последовательностями.

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

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

Вывод

Используйте yield, когда нужно работать с последовательностями данных, которые не помещаются в память целиком, или когда требуется ленивая генерация значений. Это делает код более эффективным по памяти и позволяет обрабатывать данные по мере необходимости.

  • Аватар

    Python Guru

    Sergey Filichkin

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

Уровень

  • Рейтинг:

    4

  • Сложность:

    4

Навыки

  • Python

    Python

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

#yield

#generator

#iterator

#lazy evaluation

#Python

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

  • Аватар

    Python Guru

    Sergey Filichkin

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