Генератор и корутина — это оба механизма для управления выполнением функций, но с разными целями и поведением.
Можете объяснить отличия между генератором и корутиной в программировании?
Генератор и корутина — это оба механизма для управления выполнением функций, но с разными целями и поведением.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Генератор и корутина — это оба механизма для управления выполнением функций, но с разными целями и поведением.
- Генератор — функция, которая возвращает последовательность значений по одному с помощью ключевого слова
yield. При каждом вызове генератора выполнение продолжается с места последнегоyield. Генераторы удобны для ленивой генерации данных. - Корутина — более общий механизм, который может приостанавливать и возобновлять выполнение, а также принимать значения извне. В Python корутины часто используются для асинхронного программирования (async/await).
Пример генератора:
def count_up_to(n):
count = 1
while count <= n:
yield count
count += 1
for number in count_up_to(5):
print(number)
Пример корутины (асинхронной функции):
import asyncio
async def say_hello():
await asyncio.sleep(1)
print('Hello')
asyncio.run(say_hello())
Итого, генераторы удобны для последовательной ленивой генерации данных, а корутины — для асинхронного выполнения и управления потоками выполнения.