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