2016-09-13 8 views
0

大規模で扱いにくいPythonコードを継承しました。あるファイルでは、別のファイルからインポートされたコマンドのリストを使用します。これをpdbで見ると、このコマンド変数はグローバル名前空間で終わります。しかし、使用されているようにも見えない別のファイルがあります。このファイルにはコマンド変数があり、何らかの理由でその変数が代わりに使用されています。グローバル(ish)変数のソースを見つける方法は?

私の質問は、コマンド変数のソースを表示するにはpdbまたは単にコードの方法はありますか?私は何らかの理由でそのファイルを指していることを示すいくつかの具体的な証拠を期待しています。

グローバル変数の危険性について私は推測していますが、コードをクリーンアップすることはできますが、まずそれを十分に理解したいと思います。私はいくつかの素晴らしいラッパーを提供pycharmを使用するPDBと

import inspect 
inspect.getmodule(commands) 
+0

イムスーパーfamilliarない...しかし、あなたはメモリに時計をオンに設定できます。 –

+0

['inspect.getsourcefile()'](https://docs.python.org/2/library/inspect.html#inspect.getsourcefile)を使用することができます。おそらく['pdb.runcall()'](https://docs.python.org/2/library/pdb.html#pdb.runcall)を介してpdbから呼び出すことができるかどうかわからないでしょう。 – martineau

答えて

0

commandsオブジェクトのモジュールを取得するには、試みることができますあなたが変更したときに通知するアドレス...残念ながら、誰かが変数を追加またはポップするのではなく、おそらく意図したとおりに動作しない場合は...この変数のように聞こえるのはモジュール名前空間の一部です...私はしませんまだ問題を適切に診断したとお考えください
関連する問題