2

大規模な科学プログラムをリファクタリングしています。アプリケーションのメイン コードは、数百のパラメーターを使用した数十の方程式で構成されています。この計算コードは広範囲にテストされているため、変更したくありません。

パラメータのいくつかは、セットに論理的にひとまとめにすることができ、たとえば、所与の機器に対応するパラメータのセットが存在することがある。シミュレーションは、さまざまなパラメーターのセットをスワップ インおよびスワップ アウトすることによって実行されます。

簡単に変更できるように、パラメータを別のファイルに保持したいと思います。

私の質問は次のとおりです。使用するセットを指定できるように、計算モジュールの名前空間にパラメーターを「インポート」するにはどうすればよいですか?

現在、ハックと思われるものを使用しています。parameters モジュールでは、辞書に値を保持しています。例えば、

----- start params_module -----
instrument1 = dict(param1=1.0, param2=2.0, ...)
instrument2 = dict(param1=3.0, param2=4.0, ...)
instrument3 = dict(param1=5.0, param2=6.0, ...)
misc_params = dict(param10 = 10, param11=20, ...)
...
----- end params_module -----

次に、目的のディクショナリをcalculation_module名前空間にインポートし、グローバル ディクショナリに追加します。

--- start calculation_module -----
from params_module import instrument1, misc_params
globals().update(instrument1) 
globals().update(misc_params)
...
many equations that make use of param1, param2, etc.
...
--- end calculation_module -----

これを行うためのより Pythonic な方法はありますか?

ありがとうございました。

-シトクロム

4

1 に答える 1

3

方法は問題ありませんが、calculation_module のパラメーターを変更する場合は、calculation_module.py コードを変更する必要があります。代わりに execfile を使用します。

from params_module import instrument1, misc_params
env = {}
env.update(instrument1) 
env.update(misc_params)

execfile("calculation_module.py", env)

#get your result form env
于 2012-05-07T13:08:46.173 に答える