如何以编程方式设置全局(模块)变量?

发布于 2021-01-29 19:32:42

我想以“程序化”方式定义全局变量。与我要执行的操作类似的操作是:

definitions = {'a': 1, 'b': 2, 'c': 123.4}
for definition in definitions.items():
    exec("%s = %r" % definition)  # a = 1, etc.

具体来说,我想创建一个fundamentalconstants包含可通过诸如此类访问的变量的模块fundamentalconstants.electron_mass,其中所有值都是通过解析文件获得的(因此需要以“编程”方式进行分配)。

现在,exec以上解决方案将起作用。但是我对此有些不安,因为恐怕这exec不是实现设置模块全局变量的最干净的方法。

关注者
0
被浏览
51
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您可以在globals()返回的字典中设置globals:

    definitions = {'a': 1, 'b': 2, 'c': 123.4}
    for name, value in definitions.items():
        globals()[name] = value
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看