replacement - string python
¿Cómo obtener el valor de una variable dado su nombre en una cadena? (4)
Esta pregunta ya tiene una respuesta aquí:
- ¿Cómo creo una cantidad variable de variables? 12 respuestas
Para simplificar, esta es una versión simplificada de lo que quiero hacer:
def foo(a):
# I want to print the value of the variable
# the name of which is contained in a
Sé cómo hacer esto en PHP:
function foo($a) {
echo $$a;
}
global $string = "blah"; // might not need to be global but that''s irrelevant
foo("string"); // prints "blah"
Alguna forma de hacer esto?
La respuesta de Edward Loper solo funciona si la variable está en el módulo actual. Para obtener un valor en otro módulo, puede usar getattr
:
import other
print getattr(other, "name_of_variable")
Si se trata de una variable global, puede hacer lo siguiente:
>>> a = 5
>>> globals()[''a'']
5
Una nota sobre las diversas soluciones "eval": debe tener cuidado con eval, especialmente si la cadena que está evaluando proviene de una fuente potencialmente no confiable; de lo contrario, podría terminar borrando todo el contenido de su disco o algo así si te dan una cadena maliciosa
(Si no es global, necesitará acceso al espacio de nombres en el que esté definido. Si no lo tiene, no podrá acceder a él).
>>> string = "blah"
>>> string
''blah''
>>> x = "string"
>>> eval(x)
''blah''
>>> x=5
>>> print eval(''x'')
5
tada!