Odpowiedzi:
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.
To jest właściwy sposób, aby to zrobić.
Możesz także użyć next(gen)
.
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.
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.
W1 = params.next()
ale pojawia się błądAttributeError: 'generator' object has no attribute 'next'