我想用“程序化”的方式来定义全局变量。我想做的是:
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
不是实现设置模块全局的目标的最干净的方法。
你说得对,
exec
通常是个坏主意,在这种情况下当然不需要。奈德的回答很好。如果您是模块,另一种可能的方法是导入您自己:
基本常数.py:
下面是一个更好的方法:
您可以在globals()返回的字典中设置globals:
相关问题 更多 >
编程相关推荐