Как вызвать корутину
Python
Middle
Без компании
Как вызвать корутину
Ответы
Вызов корутины в Python требует её явного запуска через механизм событийного цикла (event loop). Корутина сама по себе — это объект функции, но не её выполнение.
**Основные способы:**
- **`await`** внутри другой корутины:
```
async def coro():
print("Hello")
async def main():
await coro() # Вызов корутины
```
- **Запуск через `asyncio.run()`** (Python 3.7+):
```
import asyncio
async def coro():
print("Hello")
asyncio.run(coro()) # Запуск корутины
```
- **Вручную через event loop** (устаревший способ для старых версий):
```
loop = asyncio.get_event_loop()
loop.run_until_complete(coro())
```
**Важно:**
- `await` нельзя использовать вне корутины.
- `asyncio.run()` создаёт и закрывает event loop автоматически.
- Корутины возвращают результат через `return`, который можно получить через `await`.
Пример с возвратом значения:
```
async def calc():
return 42
async def main():
result = await calc()
print(result) # 42
```