-2

有这个代码:

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

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

为什么它会忽略我的x += 5表情?通过将 globals/locals on 限制为我删除的其他内容exec,因此它不允许更改变量吗?

PS虽然如果我修改字典它确实有效。它可能与不可变类型有关吗?

4

1 回答 1

2

这是发生了什么:

>>> x = 5
>>> loc = dict(x=x)
>>> exec('x += 5', {}, loc)
>>> print(loc)
{'x': 10}
>>> x
5
于 2019-04-18T07:51:56.733 回答