Leer asignaciones en un archivo de texto
Chema Cortes
pych3m4 en gmail.com
Jue Jul 19 09:32:32 CEST 2007
El 19/07/07, ruben gomez <ruido_electronico en yahoo.es> escribió:
> Por el momento eval( ) ha solucionado el problema. Pero me surgen dos dudas:
>
> 1-¿Porqué se me recomienda no usarlo? ¿Qué desventajas tiene?
desventaja: es necesario otro proceso diferente que interprete el código.
No se recomienda debido a que no controla la posible ejecución de
código malicioso.
> 2-Igualmente, si redefino una variable dentro de una definición def( ), no se me redefine dentro de todo el programa.
Si miras mejor la función eval, se le puede pasar un espacio de
nombres globales y otro locales. Usa globals() y locals() para esos
dos espacios, aunque no resuelve el problema del código malicioso.
Existen técnicas para restringir lo que se puede hacer en un eval
(mira en la lista[0]); pero si vas a usar la función globals() de
todos modos, entonces úsala tal como te dije en lugar del 'eval' sin
más complicaciones.
[0] http://listas.aditel.org/archivos/python-es/2006-April/017018.html
Más información sobre la lista de distribución Python-es