如何在Python 3.x中从字符串实例化函数?

时间:2018-08-01 13:44:49

标签: python python-3.x

我有一个字符串,其中包含函数的全文:

my_str = 'def my_fn(a, b):\n    return a+b'

我希望程序能够实例化my_func并将其保存到对象中,然后再调用它。

在命令行中查看时,

exec(my_str)返回<function my_fn at ...>,但在运行时为undefinedeval(my_str)返回一个SyntaxError: invalid syntax,但这并不是我真正想要的。

我在这里很困惑。如何从该字符串获取函数变量?

如果以后我可以将该函数重命名为其他名称(一开始不知道其名称),那将是一个不错的收获。

注意:我知道使用exec是危险的。如果有更好的方法可以做到这一点,我欢迎您提出建议。目前,这只是一个研究代码。它在本地运行,我向人们展示了如何使用它,并且它不在互联网上。

1 个答案:

答案 0 :(得分:3)

我认为您正在寻找 exec(my_str, globals()) 它将放入globals词典中,使您可以访问它