Python Glossary English

Python 3.6+inspectфункция

inspect.isasyncgen()

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

Проверяет, что объект — асинхронный генератор: результат вызова async def-функции с yield.

Синтаксис

inspect.isasyncgen(object) -> bool

Вызов такой функции ничего не исполняет и сразу возвращает объект для async for — у него __anext__, а не __await__, поэтому isawaitable и iscoroutine дают False. Обычный for по нему падает с TypeError. Незавершённый асинхронный генератор лучше закрывать явно (await agen.aclose()) или через contextlib.aclosing, иначе его finally сработает неизвестно когда.

Примеры

import inspect
async def ticks():
    yield 1
agen = ticks()
print(inspect.isasyncgen(agen), inspect.isasyncgen(ticks))  # → True False
print(inspect.isawaitable(agen), inspect.iscoroutine(agen))  # → False False
try:
    for x in agen:
        pass
except TypeError as e:
    print(type(e).__name__)  # → TypeError

См. также

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

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