我希望能够采用一个描述Python函数的字符串并将其转换为一个函数对象,然后可以调用该对象。例如,
myString = "def add5(x):
return x + 5"
myFunc = myString.toFunction() <-- something like this?
print myFunc(10) <-- should print 15
我之所以能够做到这一点,是由于我在计算机课的理论基础上提出的一个问题,该问题是在SISO(字符串输入,字符串输出)的假设下进行的。特别是,我们正在研究无法解决的问题yesOnString(P,I),如果P(I)=“ yes”,则返回“ yes”,否则返回“ no”。因此,我希望能够以字符串形式作为参数传递一个函数P,然后将该函数转换为一个字符串,然后调用该函数。
答案 0 :(得分:-2)
使用内置的Python exec() function,这是可能的。
myString = "def myFunc(x): return x + 5"
exec( myString ) # myFunc = myString.toFunction() <-- something like this?
print( myFunc(10) ) # <-- should print 15
如果要保持相同的命名模式
myString = "def add5(x): return x + 5"
exec( myString ) # myFunc = myString.toFunction() <-- something like this?
myFunc = add5
print( myFunc(10) ) # <-- should print 15
在安全方面:exec()
执行给定的字符串,任何给定的字符串。
import os.system
os.system("format C:") # etc.
因此请务必小心使用方式。当然不是任何形式的用户输入。