Python Glossary English

Python 3.3+collectionsпонятие

collections.abc.Iterator

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

Протокол итератора: есть __next__ и __iter__ (возвращает себя).

Синтаксис

isinstance(obj, collections.abc.Iterator)

Каждый Iterator — это Iterable, но не наоборот: список перебирать можно, а сам итератором он не является, им становится результат iter(списка). Практический смысл такой проверки — узнать, что объект одноразовый: после полного прохода итератор исчерпан, второй for по нему не даст ничего, поэтому функции, которой нужен повторный проход по входу, стоит сразу материализовать его в list.

Примеры

import collections.abc as abc
print(isinstance(iter([1]), abc.Iterator))   # → True
print(isinstance([1, 2], abc.Iterator))  # → False
print(isinstance([1, 2], abc.Iterable))  # → True
print(isinstance(map(str, [1, 2]), abc.Iterator))  # → True
it = iter([1])
print(next(it, 'stop'), next(it, 'stop'))  # → 1 stop

См. также

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