チェックアウトすることでセルの内容を取得できますf.func_closure
(Python 2.7.5 で動作します):
>>> def f(x):
... def g(y):
... return x + y
... return g
...
>>> f2 = f(2)
>>> [cell.cell_contents for cell in f2.func_closure]
[2]
Python 3.3 には次のinspect.getclosurevars
機能があります。
Python 関数またはメソッド func の外部名参照の現在の値へのマッピングを取得します。名前付きタプルClosureVars(nonlocals, globals, builtins, unbound)
が返されます。nonlocals は、参照された名前をレキシカル クロージャ変数にマップし、グローバルを関数のモジュール グローバルにマップし、ビルトインを関数本体から見えるビルトインにマップします。unbound は、関数内で参照されている名前のセットであり、現在のモジュール グローバルとビルトインではまったく解決できませんでした。
Python 3.3 より前の閉じられた変数名を取得できるかどうかはまだわかりません。