Re: Simple and safe evaluator
- From: bvdp <bob@xxxxxxxxxxxx>
- Date: Mon, 16 Jun 2008 15:02:56 -0700
George Sakkis wrote:
On Jun 16, 4:47 pm, bvdp <b...@xxxxxxxxxxxx> wrote:
2. I thought I'd be happy with * / + -, etc. Of course now I want to add
a few more funcs like int() and sin(). How would I do that?
For the builtin eval, just populate the globals dict with the names
you want to make available:
import math
globs = {'__builtins__' : None}
# expose selected builtins
for name in 'True False int float round abs divmod'.split():
globs[name] = eval(name)
# expose selected math constants and functions
for name in 'e pi sqrt exp log ceil floor sin cos tan'.split():
globs[name] = getattr(math,name)
return eval(s, globs, {})
Thanks. That was easy :)
The change to the _ast version is left as an exercise to the reader ;)
And I have absolutely no idea on how to do this. I can't even find the _ast import file on my system. I'm assuming that the _ast definitions are buried in the C part of python, but that is just a silly guess.
Bob.
.
- Follow-Ups:
- Re: Simple and safe evaluator
- From: sweeneym
- Re: Simple and safe evaluator
- References:
- Re: Simple and safe evaluator
- From: bvdp
- Re: Simple and safe evaluator
- From: George Sakkis
- Re: Simple and safe evaluator
- Prev by Date: Please explain Python "__whatever__" construct.
- Next by Date: Re: Please explain Python "__whatever__" construct.
- Previous by thread: Re: Simple and safe evaluator
- Next by thread: Re: Simple and safe evaluator
- Index(es):
Relevant Pages
|