有限执行:无法为变量分配新值?

时间:2019-04-18 07:43:25

标签: python python-3.x python-exec

具有此代码:

x = 10
exec('x += 5', {}, {'x': x})
print(x)  # prints 10.

# This works of course
exec('x += 5')
print(x)  # prints 15.

为什么它会忽略我的x += 5表达式?通过限制exec上的globals / locals,我还有其他要删除的东西,因此不允许更改变量吗?

P.S。虽然如果我修改字典也可以。也许和不可变类型有关?

1 个答案:

答案 0 :(得分:2)

这是怎么回事:

>>> x = 5
>>> loc = dict(x=x)
>>> exec('x += 5', {}, loc)
>>> print(loc)
{'x': 10}
>>> x
5