Sobes.tech
Back to questions
Junior — Middle
70

Какое различие существует между объявлением функции с использованием async def и обычной функции с def в Python?

Answer from AI

sobes.tech AI

Объявление функции с async def в Python создаёт асинхронную функцию (корутину), которую можно вызывать с помощью await внутри асинхронного контекста. Обычная функция с def — синхронная и выполняется сразу при вызове.

Основные различия:

  • async def позволяет писать неблокирующий код, например, для работы с вводом-выводом (I/O), сетевыми запросами и т.п.
  • Асинхронная функция возвращает корутину, которую нужно запускать через await или в цикле событий.
  • Синхронная функция выполняется полностью при вызове и блокирует поток до завершения.

Пример:

import asyncio

async def async_func():
    await asyncio.sleep(1)
    return 'async result'

def sync_func():
    import time
    time.sleep(1)
    return 'sync result'

async def main():
    result = await async_func()
    print(result)

asyncio.run(main())