Python Glossary English

Python 3.5+collectionsпонятие

collections.abc.Generator

collections.abc — протоколы

Протокол генератора: итератор с методами send/throw/close.

Синтаксис

isinstance(obj, collections.abc.Generator)

Проверку проходит настоящий генератор — функция с yield или генераторное выражение — и любой класс, где есть ещё send, throw и close; ваш собственный класс с одними __iter__ и __next__ опознается как Iterator, но не как Generator, потому что здесь дополнительно требуются send, throw и close. Если вам нужно просто «это ленивый одноразовый перебор», спрашивайте Iterator. И не забывайте про главную ловушку самих генераторов: после одного полного прохода объект исчерпан, второй цикл по нему молча не выдаст ничего.

Примеры

import collections.abc as abc
def g():
    yield 1
print(isinstance(g(), abc.Generator))   # → True

См. также

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