veces que desea importar uno de los muchos archivos de configuración, cada uno de los cuales tenía valores diferentes para las mismas variables con nombre, predice, etc.
No se puede hacer esto:
def mother_function(module, *args, **kwargs):
from module import variable
return variable
def call_home_to_mamma():
import module_42
return mother_function(module_42)
La explicación de por qué esto no funciona está por encima de mi grado de pago e implica cierres y espacios de nombres. Lo que encontré fue trabajado a llamar a la función madre con 'module_name' como un argumento de cadena, a continuación, importe dyamically la variable particular, cuando realmente lo necesitaba:
def mother_function(module_name, *args, **kwargs):
exec('from %s import %s' % (module_name, variable))
variable = eval(variable)
return variable
def call_home_to_mamma():
import module_42
return mother_function(module_42.__name__)
bingo .... usted tiene la importación de cualquier variable Dyamic que desea, desde un módulo importado como se determina en el tiempo de ejecución.
+1 Estoy usando __builtins__ en lugar de globals() para poder usar este código desde otro módulo. –