Ответ 1
Это просто для согласованности с функциями типа len()
. Я считаю, что next(i)
вызывает i.__next__()
внутренне.
Я заметил, что Python2.6 добавил в него следующий() список глобальных функций.
Retrieve the next item from the iterator by calling its next() method.
Если задано
default
, оно возвращается, если итератор исчерпан, иначеStopIteration
.
Какова была мотивация для добавления этого?
Что вы можете сделать с next(iterator)
, который вы не можете сделать с iterator.next()
и предложением except
для обработки StopIteration?
Это просто для согласованности с функциями типа len()
. Я считаю, что next(i)
вызывает i.__next__()
внутренне.
Обратите внимание, что в Python 3.0+ метод next
был переименован в __next__
. Это из-за последовательности. next
- специальный метод, а специальные методы называются по соглашению (PEP 8) с двойным верхним и нижним подчеркиванием. Специальные методы не предназначены для прямого вызова, поэтому была введена встроенная функция next
.
Он вызывает __next__
внутренне, но делает его более функциональным, чем "объектно-ориентированным". Имейте в виду, что только мое мнение, но мне не нравится next(i)
, а не i.next()
. Но, как сказал Стив Мак, он также немного помогает в согласованности.