関数が定義されたフレームをプログラムで見つける方法はありますか?関数が定義されたフレームオブジェクトを取得する
def foo():
def bar():
pass
return bar
bar = foo()
get_defining_frame(foo) # should be the same as inspect.currentframe()
get_defining_frame(bar) # should be the frame created by the call to foo
ありがとう:私はこのように働くだろう機能get_defining_frame
のようなものを探しています!
実行時にコードを視覚化しようとしています。しかし、フレームがまだアクセス可能であることはかなり確信しています...変数 'x'が' foo'にあれば、 'bar'を呼び出しても' x'にアクセスできるはずです。 – user1196203
'x'にはそうですが、' x'とも呼ばれるフレームにはありません。ローカル変数がネストされた関数から参照されるとき、実際にはセル変数になります。通常のローカル変数と比較して、間接参照の余分なレイヤーがあります。正確には、フレームオブジェクトは固執する必要がありません。セル変数は生きていて(個別に)保持され、フレームオブジェクトに関するその他すべてが破棄されます。 –