やっとPythonのクロージャの仕組みを少しは理解した件 で、清水川先生がクロージャを返すとき実行中のフレームオブジェクトが保存されるのか?という疑問を呈されている。 結論から言うと、フレームオブジェクトは保存されず、クロージャが必要とするオブジェクトだけが残される。この辺の仕組みがを簡単に解説してみよう。尚、以下の解説はPython2のものであり、Python3については未調査である。 例として、こんな関数を考えてみよう。 def func(): a = 100 b = 200 c = 300 def func2(): return a, b a = 400 return func2 この例では、func2 は func のローカル変数 a と b を参照するクロージャである。実行すると、(400, 200) を返す。 さて、関数を実行中、そのローカル変数は "セル"(cell)というオ