有限执行:无法为变量分配新值?
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
有这个代码:
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