好吧,所以我有一个非常恼人的问题,其中一个变量在本地被设置,但在该函数之外被还原为它的旧自我(在这种情况下为无),但同时我可以操作其他变量,并且仍然可以不使用“全局”关键字。什么时候需要在python中使用全局关键字
我不能为此提供真正的代码,但它是这样的:
foo = {}
foo_foo = {}
bar = None
def changes_foo():
...do some stuff to foo...
class EditThread(threading.Thread):
def __init__(self):
setup()
def run(self):
for key, value in foo.items():
do_update_task(key, value)
def do_update_task(self, key, value):
...do some editing too foo...
del foo[key]
bar = [key, value]
foo_foo[key] = value
def print_the_bar():
print bar
请注意,所有上foo
的操作和foo_foo
作品就好了,但酒吧仍是无当我打电话print_the_bar
,而且我的代码中有很多打印语句来验证do_update_task
内部的栏实际上是否具有正确的值并且不是无。
有人请向我解释为什么是这样吗?
相关:http://stackoverflow.com/questions/423379/using-global-variables-in-a-function-other-than-the-one-that-created-them – SeanC 2012-08-08 15:01:03
我的观点是,我仍然可以对foo和foo_foo进行更改,但是当我对bar进行更改时,它只会在本地范围内进行更新。我非常乐意接受我不是一个经验丰富的pythonista,我的问题是为什么我不断收到这个错误。 – 2012-08-08 15:05:08
“有人可以向我解释为什么它是这样吗?”用两个词:变量范围。换句话说:[链接](http://docs.python.org/release/1.5.1p1/tut/scopes.html) – chucksmash 2012-08-08 15:06:06