Мой вопрос касается понимания генераторов, а не взаимодействия с шахматной игрой, которую я использую только в качестве примера.
Это создает генератор, представляющий шахматную игру:
>>> from chess import pgn
>>> a_game = pgn.read_game(open('achessgame.pgn')) #importing game from a file
А потом я пытаюсь пройтись по игре, но она всегда возвращает 1-й ход:
>>> next(a_game.main_line())
Move.from_uci('e2e4')
>>> next(a_game.main_line())
Move.from_uci('e2e4')
Но тогда вот как это происходит на самом деле:
a = a_game.main_line()
>>> next(a)
Move.from_uci('e2e4')
>>> next(a)
Move.from_uci('e7e5')
Почему next()
в 1-м случае продолжает выводить 1-й ход, а генератор a
во 2-х шагах игры?И a_game.main_line
, и a
являются генераторами, но почему они не ведут себя одинаково?