您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

C Python:在上下文中运行Python代码

C Python:在上下文中运行Python代码

Python实际上并没有将外部作用域的本地复制到内部作用域的本地;locals状态文档:

当在功能块中调用免费变量时,它是由locals()返回的,而在类块中则没有。

这里的“自由”变量是指由嵌套函数封闭的变量。这是一个重要的区别。

您的情况,最简单的解决方法是只传递 一个 字典对象globalslocals

code = """
myvar = 300
def func():
    return myvar

func()
"""
d = {}
eval(compile(code, "<str>", "exec"), d, d)

否则,您可以将代码包装在一个函数中,然后从编译的对象中提取出来:

s = 'def outer():\n    ' + '\n    '.join(code.strip().split('\n'))
exec(compile(s, '<str>', 'exec').co_consts[0], {}, {})
python 2022/1/1 18:38:02 有452人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶