我有一个字符串,其中包含函数的全文:
my_str = 'def my_fn(a, b):\n return a+b'
我希望程序能够实例化my_func
并将其保存到对象中,然后再调用它。
exec(my_str)
返回<function my_fn at ...>
,但在运行时为undefined
。 eval(my_str)
返回一个SyntaxError: invalid syntax
,但这并不是我真正想要的。
我在这里很困惑。如何从该字符串获取函数变量?
如果以后我可以将该函数重命名为其他名称(一开始不知道其名称),那将是一个不错的收获。
注意:我知道使用exec
是危险的。如果有更好的方法可以做到这一点,我欢迎您提出建议。目前,这只是一个研究代码。它在本地运行,我向人们展示了如何使用它,并且它不在互联网上。
答案 0 :(得分:3)
我认为您正在寻找
exec(my_str, globals())
它将放入globals词典中,使您可以访问它