¿Qué paso como primer parámetro " object
" a la función setattr(object, name, value)
, para establecer variables en el módulo actual?
Por ejemplo:
setattr(object, "SOME_CONSTANT", 42);
dando el mismo efecto que:
SOME_CONSTANT = 42
dentro del módulo que contiene estas líneas (con el correcto object
).
Genero varios valores a nivel de módulo de forma dinámica, y como no puedo definir __getattr__
a nivel de módulo, esta es mi alternativa.
vars()
al alcance de nivel de módulo en lugar de dentro de una función.vars()
es equivalente aglobals()
en el alcance del módulo (y, por lo tanto, devuelve un dict verdadero y modificable) pero alocals()
en el alcance de la función (y, por lo tanto, devuelve un pseudodict que nunca se modificará). Lo usovars()
en el alcance del módulo, ya que guarda 3 caracteres, una sílaba, frente a su sinónimo en ese alcanceglobals()
;-)exec ''
: cronometra una función con un par de bucles sustanciales en cada sentido, y verá la importancia de esta optimización central para el rendimiento de Python.