EOL EOL - 3 months ago 17
Python Question

How to programmatically set a global (module) variable?

I would like to define globals in a "programmatic" way. Something similar to what I want to do would be:

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


Specifically, I want to create a module
fundamentalconstants
that contains variables that can be accessed as
fundamentalconstants.electron_mass
, etc., where all values are obtained through parsing a file (hence the need to do the assignments in a "programmatic" way).

Now, the
exec
solution above would work. But I am a little bit uneasy with it, because I'm afraid that
exec
is not the cleanest way to achieve the goal of setting module globals.

Answer

You can set globals in the dictionary returned by globals():

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