Python Glossary English

Python 3.12+inspectфункция

inspect.markcoroutinefunction()

корутины и генераторы

Декоратор: помечает обычную функцию, возвращающую корутину, так, чтобы iscoroutinefunction() давал для неё True.

Синтаксис

@inspect.markcoroutinefunction

Пометка — обещание, а не превращение: функция остаётся синхронной и возвращает то, что возвращала, так что пометить функцию, которая корутину не возвращает, значит обмануть фреймворк. Возвращается тот же объект, помеченный атрибутом, — для встроенных и других объектов без __dict__ это AttributeError. Нужна для API, которые выбирают поведение по iscoroutinefunction (например, Django); где можно — просто пишите async def.

Примеры

import asyncio, inspect
async def fetch():
    return 'data'
@inspect.markcoroutinefunction
def fetch_cached():
    return fetch()  # обычная функция, отдающая корутину
print(inspect.iscoroutinefunction(fetch_cached))  # → True
print(asyncio.run(fetch_cached()))  # → data

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности