私はpythonを初めて使用し、SpyderのIDEを使用しています。変数エクスプローラーであることに感謝します。しかし、いくつかの調査に基づいて、グローバル変数のみを表示することがわかりました。回避策そのために私が見つけたのは、inspectモジュールを使用することです。
import inspect
local_vars = {}
def main():
global local_vars
a = 2
b = 4
c = a+b
local_vars = inspect.currentframe().f_locals
return c
main()
これはうまく機能しますが、main()内から呼び出される他の関数があり、これらの変数を変数エクスプローラーにも表示したいと考えています。私はメイン関数の変数に対して何が行われたのかを真似て、dictが表示されません。 Spyderの変数エクスプローラーオプションで「サポートされていないデータタイプを除外する」設定を無効にすると、2番目の辞書が適切なサイズ属性で表示されますが、開いたり表示したりできません。可能な回避策に関するアイデアはありますか? BTWを投稿するのはこれが初めてです。
ありがとう!!
これが私の問題の実際の例であり、私はそれをpylabサブプロットまで追跡しました。
import inspect, pylab
mainVars = {}
def main():
global mainVars
a = 1
b = 2
fig = pylab.figure()
subPlot = fig.add_subplot(211) ## line of interest
pylab.close('all')
mainVars = inspect.currentframe().f_locals
main()
関心のある行がコメント化されると、dictは正常に作成され、表示できます。 fig.add_subplot()を使用して作成されたオブジェクトは、dictによって適切に処理されていないようです。サポートされていないデータ型のようです。
これが問題の明確化に役立つことを願っています。
再度、感謝します。
サポートされていないローカル変数の内容を表示するには、次の手順を実行する必要があります。
変数エクスプローラーのオプションメニューに移動します(左から右にある最後のアイコン)。
サポートされていないデータタイプを除外というオプションを選択します。
次に、ダブルクリックできない場合でも、f_locals
辞書に保存されているすべてのローカル変数が表示されます。
これらの回避策はすべて、コードを外部の人にとって非常に読みにくくしています。関数内の変数の値を検査するには、2つのオプションがあります。まず、関心のある変数を返すだけです。
def main():
a = 2
b = 4
c = a+b
return a, b, c
a, b, c = main()
次に、関数が期待どおりに動作することを確認するか、デバッグするだけの場合は、関数をデバッグしてステップインできます。そのため、ファイルを直接実行するのではなく、メニューから[実行|デバッグ]を選択します。次に、関数にステップインできます。変数の値は、実行が関数の内部にあるときに変数エクスプローラーに表示されます。