好的,我一直有一个非常烦人的问题,即变量在本地设置后,在该函数之外恢复为其旧值(在这种情况下为 None),但同时我仍然可以操作其他变量而不使用“global”关键字。
我无法提供真实的代码,但它大致如下:
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
时,bar仍然为None,我在代码中添加了很多打印语句来验证do_update_task
内的bar确实具有正确的值且不为None。请有人能解释一下这是为什么吗?