当我运行此代码时:
a = '1'
vars()['a'] = '2'
print a
我得到以下输出:
2
但是当我运行这段代码时:
def bar():
a = '1'
vars()['a'] = '2'
print a
bar()
我得到以下输出:
1
现在我的问题是为什么会发生这种情况,我怎样才能让第二种情况给我与第一种情况相同的解决方案。
编辑:
无法真正找到解决方案,但我发现了一个小技巧......虽然我宁愿不使用 exec:
def bar():
a = "a"
b = "b"
exec a+"="+b
print a
bar()
这让我得到了结果:
b
如果有人能找到更好的解决方案,那就太好了。我不会以这种方式设置任何全局变量或做任何疯狂的事情,所以不要担心。