将变量传入和传出exec

  • 本文关键字:exec 变量 python
  • 更新时间 :
  • 英文 :


给定以下代码

a = 100
b = 200
snip = '''
c = a+b
'''
exec(snip)
print(c)

如何将值传递到exec,并从exec中获取值,而不使用全局作用域?实际上,我希望能够显式地控制exec访问的整个范围。

一般来说,全局作用域与exec一起使用

a = 100
b = 200
snip = '''
c = a+b
'''
exec(snip)
print(c)

然而,这在某些用例中可能会有问题。exec允许您传入定义全局和局部作用域的字典。下面是一个例子:

snip = '''
c = a+b
'''
input_globals = {'a': 100, 'b': 2}
output_locals = {}
exec(snip, input_globals, output_locals)
print(output_locals)

结果如下:

{'c': 102}

这有效地允许一个人使用exec与它自己的作用域,而不需要工作和修改全局作用域。

你可以阅读这篇文章了解更多细节。

最新更新