W Pythonie <= 2.5 użyj gen.next(). Będzie to działać dla wszystkich wersji Pythona 2.x, ale nie dla Pythona 3.x
W Pythonie> = 2.6 użyj next(gen). Jest to wbudowana funkcja i jest jaśniejsza. Będzie również działać w Pythonie 3.
Oba kończą się wywołaniem specjalnie nazwanej funkcji next(), którą można przesłonić przez podklasę. Jednak w Pythonie 3 nazwa tej funkcji została zmieniona na __next__(), aby była spójna z innymi funkcjami specjalnymi.
Aby uzyskać wartość skojarzoną z obiektem generatora w Pythonie 3 i nowszych, użyj next(<your generator object>). kolejne wywołania next () generują kolejne wartości obiektów w kolejce.
To nie jest takie dziwne. Python 3 ma zepsuć rzeczy i pozwolić tylko na jaśniejszy, lepszy kod. Brak kompatybilności wstecznej jest powodem pewnych istotnych zmian.
W1 = params.next()
ale pojawia się błądAttributeError: 'generator' object has no attribute 'next'
W Pythonie <= 2.5 użyj
gen.next()
. Będzie to działać dla wszystkich wersji Pythona 2.x, ale nie dla Pythona 3.xW Pythonie> = 2.6 użyj
next(gen)
. Jest to wbudowana funkcja i jest jaśniejsza. Będzie również działać w Pythonie 3.Oba kończą się wywołaniem specjalnie nazwanej funkcji
next()
, którą można przesłonić przez podklasę. Jednak w Pythonie 3 nazwa tej funkcji została zmieniona na__next__()
, aby była spójna z innymi funkcjami specjalnymi.źródło
Użyj (dla Pythona 3)
Oto przykład
powinien drukować
źródło
To jest właściwy sposób, aby to zrobić.
Możesz także użyć
next(gen)
.http://docs.python.org/library/functions.html#next
źródło
Aby uzyskać wartość skojarzoną z obiektem generatora w Pythonie 3 i nowszych, użyj
next(<your generator object>)
. kolejne wywołania next () generują kolejne wartości obiektów w kolejce.źródło
W Pythonie 3 nie masz
gen.next()
, ale nadal możesz używaćnext(gen)
. Trochę dziwne, jeśli mnie zapytasz, ale tak to jest.źródło