Mam generator, który generuje serię, na przykład:
def triangle_nums():
'''Generates a series of triangle numbers'''
tn = 0
counter = 1
while True:
tn += counter
yield tn
counter += + 1
W Pythonie 2 jestem w stanie wykonywać następujące połączenia:
g = triangle_nums() # get the generator
g.next() # get the next value
jednak w Pythonie 3, jeśli wykonam te same dwa wiersze kodu, pojawia się następujący błąd:
AttributeError: 'generator' object has no attribute 'next'
ale składnia iteratora pętli działa w Pythonie 3
for n in triangle_nums():
if not exit_cond:
do_something()...
Nie byłem jeszcze w stanie znaleźć niczego, co wyjaśniałoby tę różnicę w zachowaniu dla Pythona 3.