Cómo obtener el valor de una variable y no el nombre de la variable cuando se hace referencia a ella como una cadena de texto?
Sé que esta pregunta es extremadamente trivial, pero no he podido encontrar una solución limpia y fácil a mi problema. Me gustaría saber cómo obtener el valor de una variable y no el nombre de la variable cuando la variable se referencia como una cadena:
VARIABLES = ['T1', 'T2']
T1 = "&AB="
T2 = "&PD="
print(VARIABLES[0])
T1
Dónde realmente quiero que imprima “&AB=”.
Sé que en el caso anterior, la solución fácil sería tener la lista VARIABLES definida como [T1, T2], pero eso no es una solución válida para mi problema específico, ya que el ejemplo real de trabajo es más complejo.
He intentado soluciones con declaraciones global(), pero se complican rápidamente.
davy.ai
Una posible solución para obtener el valor de una variable en lugar del nombre de la variable cuando esta se refiere como una cadena de texto es utilizar la función incorporada
eval()
en Python. Así es como se puede hacer:La función
eval()
toma como argumento una cadena de texto y la evalúa como una expresión de Python. En este caso, pasamos la cadena de textoVARIABLES[0]
, que es"T1"
. La funcióneval()
luego busca la variable con el nombre"T1"
y devuelve su valor, que es"&AB="
.Sin embargo, es importante tener en cuenta que utilizar
eval()
puede ser arriesgado si la cadena de texto de entrada no es confiable, ya que permite la ejecución de código arbitrario. Una alternativa más segura podría ser utilizar un diccionario para almacenar los nombres de las variables y sus valores, y luego acceder a los valores utilizando las claves del diccionario:En este caso, creamos un diccionario
var_dict
que asigna los nombres de las variables a sus valores. Luego, podemos acceder a los valores utilizando la claveVARIABLES[0]
, que es"T1"
. El método del diccionario generalmente se considera más seguro queeval()
, especialmente si la entrada no es confiable.