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

limited exec: can't assign new value to variable?

有这个代码:

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。虽然如果我修改字典它确实有效。它可能与不可变类型有关吗?

这是正在发生的事情:

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