Convertir una cadena en nombre de variable en Python

Sahil Bhosale 21 diciembre 2022
  1. Convertir cadena en nombre de variable usando globals() y locals() en Python
  2. Convertir cadena en nombre de variable usando exec() en Python
Convertir una cadena en nombre de variable en Python

En Python, hay varias formas en las que podemos convertir un valor de cadena en un nombre de variable. En este artículo, discutiremos varias formas en las que podemos lograrlo.

Algunas personas pueden querer hacer esto para definir un nombre de variable dinámicamente mientras el programa Python está en ejecución. No se recomienda convertir una cadena en un nombre de variable utilizando las formas que se muestran a continuación mientras se desarrolla software listo para producción porque esto puede causar algunos problemas. Sí, es posible lograrlo, pero tenga cuidado al hacerlo.

Convertir cadena en nombre de variable usando globals() y locals() en Python

globals()

La función globals() en Python devuelve el diccionario de la tabla de símbolos global actual. Una tabla de símbolos globales almacena toda la información relacionada con el alcance global del programa, a la que se puede acceder mediante la función globals().

user_input = input("Enter string for variable name: \n")
globals()[user_input] = 50
print(apple)
print(type(apple))

Producción:

Convierta una cadena en un nombre de variable usando la función globals()

Lo primero que estamos haciendo aquí es tomar la entrada del usuario usando la función input() y pasar una cadena Enter a string for a variable name: dentro de ella. Entonces, sea cual sea el valor que ingrese un usuario, ese valor se almacenará dentro de la variable user_input. Aquí, esperamos que el usuario ingrese apple como un valor de cadena que luego se almacenará dentro de user_input. Si el usuario ingresa un valor que no sea apple, el programa mostrará un error como NameError: name 'variable' is not defined. Es porque también estamos imprimiendo el valor de apple y luego comprobando el tipo más adelante en nuestro código.

Si el usuario ha introducido el valor correcto, podemos modificar el diccionario global usando globals() para modificar el diccionario global y asignar cualquier valor a la variable apple. Aquí, hemos asignado 50 a la variable apple.

locales()

La función locals() en Python devuelve el diccionario de la tabla de símbolos local actual. Se puede acceder a una tabla de símbolos locales con la ayuda de la función locals(). La función locals() funciona casi de la misma forma que la función globals(). La única diferencia es que locals() puede acceder a la tabla de símbolos local y globals() puede acceder a la tabla de símbolos global y devuelve un diccionario.

user_input = input("Enter string for variable name: \n")
locals()[user_input] = 50
print(apple)
print(type(apple))

Producción:

Convierta una cadena en un nombre de variable usando la función globals()

Este código también funciona de la misma forma que el de globals(). La única diferencia es que hemos utilizado la función locals() aquí.

Convertir cadena en nombre de variable usando exec() en Python

Otra forma de hacer esto es usando la función exec() en Python. La función exec() se utiliza para ejecutar el programa Python de forma dinámica. Tenemos una variable name dentro de la cual estamos almacenando un valor de cadena Elon.

name = "Elon"
exec("%s = %d" % (name, 100))
print(Elon)

Producción :

100

Dentro de la función exec(), tenemos %s y %d, que se utilizan como marcador de posición para el valor de cadena y el valor decimal, respectivamente. Significa que asignamos un valor entero a una cadena con la ayuda del operador de asignación =. Tanto %s como %d se incluyen entre las comillas =. Luego tenemos un paréntesis dentro del cual tenemos 2 cosas, la primera es la variable que hemos creado es decir, name, que contiene el valor Elon, y la segunda tenemos un número entero 100.

Aquí, en lugar de la variable name, se sustituirá el valor dentro de esa variable. El entero 100 se asignará a Elon. Elon se convierte en un nombre de variable, y si lo imprime, obtendrá 100 como resultado.

Sahil Bhosale avatar Sahil Bhosale avatar

Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.

LinkedIn

Artículo relacionado - Python String

Artículo relacionado - Python Variable