В Python <= 2.5 используйте gen.next(). Это будет работать для всех версий Python 2.x, но не для Python 3.x
В Python> = 2.6 используйте next(gen). Это встроенная функция, и она более понятна. Это также будет работать в Python 3.
Оба они в конечном итоге вызывают функцию со специальным именем next(), которую можно переопределить путем создания подклассов. Однако в Python 3 эта функция была переименована в __next__(), чтобы соответствовать другим специальным функциям.
Чтобы получить значение, связанное с объектом генератора в Python 3 и выше, используйте next(<your generator object>). последующие вызовы next () производят последовательные значения объекта в очереди.
Это не так уж и странно. Python 3 должен ломать вещи и допускать только более четкий и лучший код. Отсутствие обратной совместимости является причиной некоторых критических изменений.
W1 = params.next()
но получаю ошибкуAttributeError: 'generator' object has no attribute 'next'
В Python <= 2.5 используйте
gen.next()
. Это будет работать для всех версий Python 2.x, но не для Python 3.xВ Python> = 2.6 используйте
next(gen)
. Это встроенная функция, и она более понятна. Это также будет работать в Python 3.Оба они в конечном итоге вызывают функцию со специальным именем
next()
, которую можно переопределить путем создания подклассов. Однако в Python 3 эта функция была переименована в__next__()
, чтобы соответствовать другим специальным функциям.источник
Использование (для Python 3)
Вот пример
следует распечатать
источник
Это правильный способ сделать это.
Вы также можете использовать
next(gen)
.http://docs.python.org/library/functions.html#next
источник
Чтобы получить значение, связанное с объектом генератора в Python 3 и выше, используйте
next(<your generator object>)
. последующие вызовы next () производят последовательные значения объекта в очереди.источник
В python 3 у вас его нет
gen.next()
, но вы все равно можете использоватьnext(gen)
. Если вы спросите меня, это немного странно, но так оно и есть.источник