Re: Pasar string a valor
Arnau Sanchez <[email protected]> Wed, 05 May 2010 15:36:17 +0200
| Newsgroups | gmane.comp.python.general.castellano |
|---|---|
| Message-ID | <[email protected]> |
On 05/05/10 15:21, Ricardo C=E1rdenes Medina wrote:
> Puedes usar eval. Por ejemplo:
>
> a =3D eval("20 * 10) + 5")
>
> Pero ten cuidado d=F3nde y cu=E1ndo usas esa funci=F3n, porque puede su=
poner
> un agujero de seguridad si se usa en lugares inadecuados.
Esto deber=EDa permitir ejecutar operaciones matem=E1ticas de forma segur=
a (=BFfalta=20
algo?):
import math
math_funcs =3D dict((s, getattr(math, s)) for s in dir(math) if not s.sta=
rtswith("_"))
extra_funcs =3D {"abs": abs, "int": int, "float": float}
def math_eval(s):
return eval(s, dict(__builtins__=3DNone), dict(math_funcs, **extra_f=
uncs))
print math_eval("int(43 + sin(-pi/2))")
# 42
print math_eval("open('/etc/passwd').read()")
# NameError
_______________________________________________
Lista de correo Python-es=20
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes