Python 3.5+inspectфункция
inspect.iscoroutinefunction()
корутины и генераторы
Проверяет, что объект — функция, объявленная через async def (или помеченная markcoroutinefunction).
Синтаксис
inspect.iscoroutinefunction(object) -> bool
Проверка смотрит на флаг кода, а не на поведение: обычная функция, возвращающая корутину, даёт False, и объект с async def __call__ — тоже False. Асинхронный генератор (async def с yield) корутинной функцией не считается. С 3.14 asyncio.iscoroutinefunction объявлен устаревшим — пишите inspect.iscoroutinefunction. Для объекта, а не функции, есть iscoroutine и isawaitable.
Примеры
import asyncio, inspect
async def fetch():
return 1
def fetch_later():
return fetch() # возвращает корутину, но сама обычная
class Handler:
async def __call__(self):
pass
print(inspect.iscoroutinefunction(fetch)) # → True
print(inspect.iscoroutinefunction(fetch_later)) # → False
print(inspect.iscoroutinefunction(Handler())) # → False
print(asyncio.run(fetch_later())) # → 1
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности