Python 3.x具有nonlocal
关键字。我认为这可以满足您的要求,但是我不确定您是在运行python 2还是3。
非本地语句使列出的标识符引用最近的封闭范围中的先前绑定的变量。这很重要,因为绑定的默认行为是首先搜索本地名称空间。该语句允许封装的代码在全局(模块)范围之外的本地范围之外重新绑定变量。
对于python 2,我通常只使用可变对象(如列表或dict),然后更改值而不是重新分配。
例:
def foo():
a = []
def bar():
a.append(1)
bar()
bar()
print a
foo()
输出:
[1, 1]