How do you convert a string (for example, input from a textbox) into a proper function?
asked Oct 4, 2009 at 4:36
nickf
548k199 gold badges660 silver badges727 bronze badges
3 Answers 3
You can use eval. But be very careful! This opens up lots of security holes.
>>> s = '3+4'
>>> eval(s)
7
If you want it callable:
>>> s = '3+4'
>>> f = eval('lambda: ' + s)
>>> f()
7
More information on eval here.
answered Oct 4, 2009 at 4:37
Peter
133k53 gold badges184 silver badges214 bronze badges
Sign up to request clarification or add additional context in comments.
Comments
try this
func = ___import___('func_name')
or
if hasattr(your_module, func_name): func = getattr(your_module, func_name)
or
if func_name in globals(): func = globals[func_name]
or something etc
Comments
def func():
print "hello"
# just eval it
eval(raw_input())
# if you just want to ask for name
fName=raw_input()
if fName in globals():
globals()[fName]()
And there could be various other ways depending on what is the objective?
answered Oct 4, 2009 at 4:42
Anurag Uniyal
89.3k41 gold badges181 silver badges223 bronze badges
2 Comments
nickf
hi anurag, just for a little beginner experiment - get the user to type a function and then i graph it
Anurag Uniyal
in that case I think eval would be just fine, you can use pycallgraph.start_trace() (pycallgraph.slowchop.com) before eval
lang-py