Czy generator.next () jest widoczny w Pythonie 3.0?
Mam generator, który generuje serię, na przykład:
def triangleNums():
'''generate series of triangle numbers'''
tn = 0
counter = 1
while(True):
tn = tn + counter
yield tn
counter = counter + 1
w python 2.6 mogę wykonywać następujące połączenia:
g = triangleNums() # get the generator
g.next() # get next val
jednak w wersji 3.0, jeśli wykonam te same dwie linie kodu, otrzymuję następujący błąd:
AttributeError: 'generator' object has no attribute 'next'
ale składnia iteratora pętli działa w wersji 3.0
for n in triangleNums():
if not exitCond:
doSomething...
Nie udało mi się jeszcze niczego znaleźć, co wyjaśnia tę różnicę w zachowaniu dla wersji 3.0.