CODE1:なぜ以下の2つのコードの結果が異なるのですか?
def af():
a=65
try:
yield a
finally:
print('end')
print(af().next())
CODE2:
end
65
しかしCODE2の結果は:
def af():
a=65
try:
yield a
finally:
print('end')
g=af()
print(g.next())
CODE1の結果は
65
end
Pythonは
print(af().next())
が
af().next()
介して取得し、ジェネレータオブジェクトの参照カウントは、この時点で0に落ちるが、Pythonが強制的に発電機のclose
メソッドを呼び出して実行するスニペット1において
はい、あなたは私の疑問を解決しました、ありがとう! –