Python Glossary English

Python 3.0+Итераторы и генераторыфункция

__next__

протокол итератора

Метод итератора, который вызывает next(): возвращает следующий элемент или бросает StopIteration.

Синтаксис

def __next__(self): ...

StopIteration — сигнал конца, а не ошибка: цикл for перехватывает его сам. Однажды бросив StopIteration, итератор должен бросать его и дальше. В Python 2 метод назывался next; в Python 3 — __next__, а next(it) стал встроенной функцией с необязательным значением по умолчанию.

Примеры

class Counter:
    def __init__(self, limit):
        self.i, self.limit = 0, limit
    def __iter__(self):
        return self
    def __next__(self):
        if self.i >= self.limit:
            raise StopIteration
        self.i += 1
        return self.i
it = Counter(2)
print(next(it), next(it))  # → 1 2
print(next(it, 'конец'))  # → конец — default вместо StopIteration

См. также

Частые ошибки

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