【问题标题】:importing large numbers of variables into namespace将大量变量导入命名空间
【发布时间】:2012-05-07 12:55:19
【问题描述】:

我正在重构一个大型科学程序。该应用程序的主要代码由使用数百个参数的数十个方程组成。因为这个计算代码已经过广泛的测试,我不想改变它。

一些参数可能在逻辑上集中在一起,例如,可能存在与给定工具相对应的参数集。通过交换不同的参数集来运行模拟。

我想将参数保存在一个单独的文件中,以便可以轻松更改它们。

我的问题是:如何以允许我指定使用哪些集合的方式将参数“导入”到计算模块命名空间中?

现在,我正在使用看起来像是 hack 的东西。在参数模块中,我将值保存在字典中。例如,

----- 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 的方式来做到这一点?

谢谢。

-细胞色素

【问题讨论】:

    标签: python import namespaces


    【解决方案1】:

    你的方法是可以的,但是如果你想改变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
    

    【讨论】:

      猜你喜欢
      • 2016-12-03
      • 2011-10-24
      • 2014-07-05
      • 1970-01-01
      • 2012-03-13
      • 2011-03-25
      • 2020-07-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多