Выбор ответа Junior asyncio спрашивают часто обновлено

Вызов корутины без await

Вопрос

Что произойдёт при вызове send_email() без await внутри другой корутины, если send_email объявлена через async def?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Создастся объект корутины, код не выполнится, будет warning. Вызов функции-корутины только создаёт объект корутины.

Варианты ответа

  1. Создастся объект корутины, код не выполнится, будет warningправильный ответ
  2. Функция выполнится синхронно, как обычный вызов
  3. Функция сама запустится в фоне как задача цикла
  4. SyntaxError: вызов async-функции без await

Разбор

Вызов функции-корутины только создаёт объект корутины. Чтобы код выполнился, его нужно await-ить или обернуть в задачу через create_task. Если объект корутины уничтожен без запуска, интерпретатор выдаёт RuntimeWarning: coroutine ... was never awaited. Синтаксически вызов корректен, а в фоне сам по себе ничего не запускается.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.