Python Glossary English

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