ジェネレータで使われている変数はなぜ前回の値を保持しているのですか?

2020年5月8日
ユーザー
def get_infinite(): # ジェネレータ
    i = 0
    while True:
        yield i * 2
        i += 1

g = get_infinite()
print(next(g))
print(next(g))
print(next(g))

このソースを見るとiはローカル変数に見えるのですが
なぜ、前回の値を保持しているのでしょうか?

この回答を見るにはプレミアムサービスへの登録が必要です

プレミアムサービスとは?