可以将输入字符串转换为Python中的可调用函数对象吗? [复制]

2024-02-09

我希望能够获取一个描述 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(使用前将#替换为@)

可以将输入字符串转换为Python中的可调用函数对象吗? [复制] 的相关文章

随机推荐