1

How do you convert a string (for example, input from a textbox) into a proper function?

3 Answers 3

6

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.

Sign up to request clarification or add additional context in comments.

Comments

1

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

0
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?

2 Comments

hi anurag, just for a little beginner experiment - get the user to type a function and then i graph it
in that case I think eval would be just fine, you can use pycallgraph.start_trace() (pycallgraph.slowchop.com) before eval

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.