【发布时间】:2012-04-23 20:28:23
【问题描述】:
当我运行这段代码时:
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
如果有人能找到更好的解决方案,那就太好了。我不会以这种方式设置任何全局变量或做任何疯狂的事情,所以不要担心。
【问题讨论】:
-
我相信课程没有区别 - 这是本地与全球范围的问题。
-
另外,如果您尝试在函数中以这种方式设置全局变量,您可能会做错事。
标签: python string names variables