【发布时间】:2019-06-24 11:20:28
【问题描述】:
我希望能够获取一个描述 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 以字符串形式作为参数传递,然后让函数将字符串转换为然后调用的函数。
【问题讨论】:
-
@Kingsley
eval()不起作用,但exec()会,但它只会引入add5作为函数名称。 @SufiyanGhori 你不能使用仅用于文字的literal_eval- 这是代码。 -
@AChampion - 我认为
exec()是 OP 想要的。即使它支持exec('import os')、exec('os.system("rm -rf blah")')。 -
是的,强制性警告。
-
@TigerhawkT3:这不是重复的。 OP 已经明确表示他想将字符串转换为函数并将其存储为变量。原始问答中没有回答。