具有此代码:
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。虽然如果我修改字典也可以。也许和不可变类型有关?
答案 0 :(得分:2)
这是怎么回事:
>>> x = 5
>>> loc = dict(x=x)
>>> exec('x += 5', {}, loc)
>>> print(loc)
{'x': 10}
>>> x
5