Выбор ответа Junior asyncio спрашивают часто обновлено
Вызов корутины без await
Вопрос
Что произойдёт при вызове send_email() без await внутри другой корутины, если send_email объявлена через async def?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Создастся объект корутины, код не выполнится, будет warning. Вызов функции-корутины только создаёт объект корутины.
Варианты ответа
- Создастся объект корутины, код не выполнится, будет warningправильный ответ
- Функция выполнится синхронно, как обычный вызов
- Функция сама запустится в фоне как задача цикла
SyntaxError: вызов async-функции безawait
Разбор
Вызов функции-корутины только создаёт объект корутины. Чтобы код выполнился, его нужно await-ить или обернуть в задачу через create_task. Если объект корутины уничтожен без запуска, интерпретатор выдаёт RuntimeWarning: coroutine ... was never awaited. Синтаксически вызов корректен, а в фоне сам по себе ничего не запускается.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.