python - 将大量变量导入命名空间

标签 python import namespaces

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

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

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

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

现在,我正在使用看似黑客的东西。在参数模块中,我将值保存在字典中。例如,

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

谢谢。

-细胞色素

最佳答案

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

关于python - 将大量变量导入命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10482467/

相关文章:

C++ 命名空间解析

未找到 PHP Laravel 类。如何使用命名空间来解决这个问题?

python - MySQL 和 Python - "image not found"- 永久修复?

python - 真的只有 4 个 Matplotlib 线型吗?

mysql - 如何创建可以通过导出和导入维护的唯一键

c++ - 使用 cmath 时禁用 math.h 废话

python - 启动 Flask 应用程序时出错,错误为 "Failed to find Flask application"

python - 2 ^ 1000 中的数字总和?

go - 在同一个文件中处理不同版本的包

android - 在进度条上显示导入的数据