Me gustaría definir globales de una manera "programática". Algo similar a lo que yo quiero hacer sería:¿Cómo programar programáticamente una variable global (módulo)?
definitions = {'a': 1, 'b': 2, 'c': 123.4}
for definition in definitions.items():
exec("%s = %r" % definition) # a = 1, etc.
Específicamente, quiero crear un módulo fundamentalconstants
que contiene variables que se puede acceder como fundamentalconstants.electron_mass
, etc., donde todos los valores se obtienen a través de análisis de un fichero (de ahí la necesidad de hacer las asignaciones de una manera "programática").
Ahora, la solución anterior exec
funcionaría. Pero estoy un poco incómodo con eso, porque me temo que exec
no es la forma más limpia de lograr el objetivo de establecer módulos globales.
+1, como 'globals()' puede ser modificado (http://stackoverflow.com/questions/4859217/programmatically-creating-variables-in-python/4859312#4859312). – EOL
Consejo: Definitivamente lea la respuesta de EOL a la que hace referencia arriba. –
Otro buen punto planteado es que los cambios a 'globals()' persistirán sin error, pero no existe tal garantía con 'locals()'. – DuckPuncher