Python Glossary English

Python 3.6+inspectфункция

inspect.isasyncgenfunction()

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

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

Синтаксис

inspect.isasyncgenfunction(object) -> bool

Такая функция — не корутинная: iscoroutinefunction даёт False, и await для результата невозможен — по нему ходят через async for. Перепутать легко, если обёртка-декоратор проверяет только iscoroutinefunction: асинхронный генератор она пропустит как обычную функцию. isgeneratorfunction для неё тоже False.

Примеры

import asyncio, inspect
async def ticks(n):
    for i in range(n):
        yield i
print(inspect.isasyncgenfunction(ticks))  # → True
print(inspect.iscoroutinefunction(ticks), inspect.isgeneratorfunction(ticks))  # → False False
async def main():
    return [i async for i in ticks(3)]
print(asyncio.run(main()))  # → [0, 1, 2]

См. также

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