我希望能够获取一个描述 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 以字符串形式作为参数传递,然后让该函数将字符串转换为随后调用的函数。
这可以通过 Python 内置功能实现exec() 函数 https://docs.python.org/3/library/functions.html#exec.
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()
executes给定的字符串,any给定的字符串。
import os.system
os.system("format C:") # etc.
所以要非常小心它的使用方式。当然不是基于任何类型的用户输入。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)