Назад к вопросам
Junior
68
questionbank

Какой синтаксис используется для создания генераторов в Python?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

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

# Простейший генератор
def simple_generator():
    yield 1
    yield 2
    yield 3

# Использование генератора
gen = simple_generator()
print(next(gen))  # Выведет 1
print(next(gen))  # Выведет 2
print(next(gen))  # Выведет 3
# print(next(gen))  # Генерирует StopIteration

# Генераторное выражение (list comprehension-подобный синтаксис)
gen_expr = (i * 2 for i in range(5))
print(list(gen_expr))  # Выведет [0, 2, 4, 6, 8]

Таблица, сравнивающая генератор с обычной функцией, возвращающей список:

Особенность Генератор (с yield) Обычная функция (возвращающая список)
Возвращаемое значение Объект-генератор (итератор) Список
Память Лентяйное вычисление (по требованию) Все элементы создаются сразу
Состояние Сохраняет состояние между вызовами Каждое выполнение начинается с нуля
Итерация Итерируется один раз Можно итерировать несколько раз