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