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