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