[英]Python define and call function represented by string
假设我们有一个字符串
function_string = 'def main():\n\treturn(1)'
如何在运行时将其编译为函数然后执行?
这是我目前的尝试,不幸的是它引发了一个 NameError 表示未定义main
:
self.run():
exec(self.formatted_function_string) # similar to 'function_string' in the example
print(main())
正如我在评论中所说,执行/评估任意字符串是一种安全风险。 但是如果你真的想这样做,你需要向exec
传递一个适当的全局字典。 这里的自然选择是将globals()
dict 传递给它,以便您的exec
定义的任何名称都放入全局命名空间。
def test(argstring):
exec(argstring, globals())
print(main())
function_string = 'def main():\n\treturn(1)'
test(function_string)
print(main)
典型输出
1
<function main at 0xb7196cd4>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.