Python Glossary English

Python 3.4+до 3.16Асинхронное программированиефункция

asyncio.iscoroutinefunction()

интроспекция

Deprecated: устаревшая проверка «функция объявлена через async def»; с 3.14 даёт DeprecationWarning, removal in 3.16. Замена — inspect.iscoroutinefunction().

Синтаксис

inspect.iscoroutinefunction(func)  # вместо asyncio.iscoroutinefunction(func)

Функция жила в asyncio ради старых генераторных корутин @asyncio.coroutine (удалены в 3.11) и не попала в справочник модуля — её объявили устаревшей в 3.14. inspect.iscoroutinefunction делает то же и понимает functools.partial; для обычной функции, возвращающей awaitable, её помечают inspect.markcoroutinefunction (3.12+). Обе проверки смотрят на объявление, а не на поведение: def, возвращающая корутину, даст False.

Примеры

import inspect
async def fetch():
    return 1
def wrapper():
    return fetch()
print(inspect.iscoroutinefunction(fetch))  # → True
print(inspect.iscoroutinefunction(wrapper))  # → False — смотрит на объявление
import asyncio
import warnings
async def fetch():
    return 1
with warnings.catch_warnings():
    warnings.simplefilter('ignore', DeprecationWarning)  # с 3.14 здесь DeprecationWarning
    print(asyncio.iscoroutinefunction(fetch))  # → True
# Python 3.16+
import functools
import inspect
async def fetch(x):
    return x
print(inspect.iscoroutinefunction(functools.partial(fetch, 1)))   # → True — partial тоже

См. также

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