все Python 3inspectфункция
inspect.isgeneratorfunction()
корутины и генераторы
Проверяет, что объект — функция-генератор: функция с yield, вызов которой возвращает генератор, а не результат.
Синтаксис
inspect.isgeneratorfunction(object) -> bool
Решает синтаксис, а не поведение: функция, которая возвращает генераторное выражение или iter(...), функцией-генератором не считается, хотя ведёт себя похоже. Асинхронный генератор (async def с yield) — тоже нет, для него isasyncgenfunction. Обёрнутая functools.partial функция распознаётся (с 3.8). Генераторную функцию легко вызвать по ошибке ради побочного эффекта — тело при этом не исполнится.
Примеры
import inspect
def countdown(n):
while n:
yield n
n -= 1
def squares(n):
return (x * x for x in range(n))
print(inspect.isgeneratorfunction(countdown)) # → True
print(inspect.isgeneratorfunction(squares)) # → False — yield в теле нет
print(inspect.isgeneratorfunction(countdown(3))) # → False — это уже генератор
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности