Matlabでは、外部ファイルに保存されるサブ関数を呼び出すプログラムを書くことができます。そのサブ関数では、前にグローバルに定義されている限り、ローカルで宣言することなく変数を使用できます。そのような種類の動作もPythonでも可能ですか?Matlabに似たPythonの外部関数でのグローバル変数の使用
例は、何かをプロットしなければならないサブ関数です。現在、私は上記の例はtensorflowチュートリアル、tensorflowセッションのためにそうsession
スタンドから来
def plot_weights(weights,session,np,plt):
...
その関数の引数としてnumpyの(NP)とmatplotlibの(PLT)を渡しています。
それがこの
def plot_weights(weights):
...
のような関数を定義し、Pythonはいくつかのグローバル変数としてsession
、np
、plt
を取る作ることは可能ですか?
['global']のようなものを探していますか(http://stackoverflow.com/questions/423379/using-global-variables-in-a-function-other-than-the-one-that-created -それら)? –
あなたは*名前空間汚染*を提唱しています。この問題は、モジュールを追加することによってこれを拡大しようとすると、名前の衝突(同じ名前を使用する複数のモジュール)が発生する場合に発生します。すべてのモジュールで使用されているすべての名前を追跡しなければならず、モジュール作成者は何も変更できません。これらの名前をあなた自身のコードでも使用しないように注意する必要があります。いつ、誰が何をいつ変更したのかを知ることができないため、サポートは悪夢になります。それはまた、子猫を殺します。 – cdarke
以下の答えによると、 'global'はモジュール間のグローバルを意味するものではないので、関数の引数としてすべてのオブジェクトを渡すことは実際できません。 numpyとmatplotlibの場合は、引数として渡すのではなく、サブ関数自体で少なくともインポートすることができると思いますか?しかし、このモジュールのリロードは遅くなるだろう... – mcExchange