Подтвердить что ты не робот

Почему Python 2.6 добавил глобальную функцию next()?

Я заметил, что Python2.6 добавил в него следующий() список глобальных функций.

next(iterator[, default])

Retrieve the next item from the iterator by calling its next() method.

Если задано default, оно возвращается, если итератор исчерпан, иначе StopIteration.

Какова была мотивация для добавления этого? Что вы можете сделать с next(iterator), который вы не можете сделать с iterator.next() и предложением except для обработки StopIteration?

4b9b3361

Ответ 1

Это просто для согласованности с функциями типа len(). Я считаю, что next(i) вызывает i.__next__() внутренне.

См. http://www.python.org/dev/peps/pep-3114/

Ответ 2

Обратите внимание, что в Python 3.0+ метод next был переименован в __next__. Это из-за последовательности. next - специальный метод, а специальные методы называются по соглашению (PEP 8) с двойным верхним и нижним подчеркиванием. Специальные методы не предназначены для прямого вызова, поэтому была введена встроенная функция next.

Ответ 3

Он вызывает __next__ внутренне, но делает его более функциональным, чем "объектно-ориентированным". Имейте в виду, что только мое мнение, но мне не нравится next(i), а не i.next(). Но, как сказал Стив Мак, он также немного помогает в согласованности.