Встречается на собеседованиях • сегодня

Как сделать декоратор принимающий асинхронную функцию в Python

Для создания декоратора, работающего с асинхронными функциями, нужно использовать async def и await. Вот пример:

python
import functools

def async_decorator(func):
    @functools.wraps(func)
    async def wrapper(*args, **kwargs):
        print("До вызова функции")
        result = await func(*args, **kwargs)
        print("После вызова функции")
        return result
    return wrapper

@async_decorator
async def async_function():
print("Асинхронная функция выполняется")
return 42

text

Ключевые моменты:
1. Декоратор должен возвращать асинхронную функцию (`async def`)
2. Для вызова исходной функции используем `await`
3. `functools.wraps` сохраняет метаданные оригинальной функции
4. Декоратор может быть как синхронной, так и асинхронной функцией

Пример использования:
```python
import asyncio

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

asyncio.run(main())
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы