El nombre no está definido al usar eval().
Actualmente estoy haciendo un miniscript que envía documentos a una ruta específica basada en un código que ingreso.
El código es básico, pero obtengo un error que realmente no entiendo.
Cuando ejecuto el siguiente código:
en = "Inglés"
source = eval(input("¿Idioma de origen?\n"))
print(source)
Si ingreso ‘en’, obtengo “Inglés” sin errores.
Pero si ejecuto lo mismo sin entrada:
en = "Inglés"
eval(en)
Obtengo “name ‘Inglés’ is not defined”.
Básicamente, quiero usar algunas funciones de eval()
en mi código sin la función input()
. ¿Dónde me equivoco?
davy.ai
El problema con el segundo código es que cuando usas
eval()
en una cadena, intentará evaluarla como una expresión de Python. En este caso, está intentando encontrar una variable llamadaEnglish
, que aún no ha sido definida.Para usar
eval()
sin la funcióninput()
, necesitarías proporcionar una cadena que sea una expresión de Python válida. Por ejemplo:Esto mostraría
"English"
sin errores.Sin embargo, usar
eval()
puede ser riesgoso porque puede ejecutar código arbitrario. Es mejor utilizar métodos más seguros para lograr el resultado deseado, como usar un diccionario para mapear código a rutas específicas.