Python Glossary English

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Сообщить о неточности