Python Glossary English

все Python 3inspectфункция

inspect.isgenerator()

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

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

Синтаксис

inspect.isgenerator(object) -> bool

Генератор — частный случай итератора, а не синоним: iter([]), map() и range() дают False. Чтобы спросить «можно ли пройти next()», нужен isinstance(x, collections.abc.Iterator). Проверка генератора нужна, когда важны его особые методы send() и throw() или то, что он одноразовый: второй проход по исчерпанному генератору молча ничего не даёт.

Примеры

import collections.abc, inspect
def gen():
    yield 1
g = gen()
print(inspect.isgenerator(g), inspect.isgenerator(x for x in []))  # → True True
print(inspect.isgenerator(iter([])), inspect.isgenerator(range(3)))  # → False False
print(isinstance(iter([]), collections.abc.Iterator))  # → True
print(list(g), list(g))  # → [1] []

См. также

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