Creating a function object from a string
The following puts the symbols that you define in your string in the dictionary d
:
d = {}
exec "def f(x): return x" in d
Now d['f']
is a function object. If you want to use variables from your program in the code in your string, you can send this via d
:
d = {'a':7}
exec "def f(x): return x + a" in d
Now d['f']
is a function object that is dynamically bound to d['a']
. When you change d['a']
, you change the output of d['f']()
.
can't you do something like this?
>>> def func_builder(name):
... def f():
... # multiline code here, using name, and using the logic you have
... return name
... return f
...
>>> func_builder("ciao")()
'ciao'
basically, assemble a real function instead of assembling a string and then trying to compile that into a function.