我尝试创建闭包,其中父框架中存在绑定名称 inner ,只能通过return提供的方法访问它。 这是我的代码:
def test():
inner = 'value'
def get_inner():
return inner
def set_inner(v):
inner = v
return get_inner, set_inner
get, set = test()
set('hello world')
但是,当我实际调用 set_inner()并在body语句 inner = v 中评估在本地框架中创建的绑定时,但父框架中的绑定保持不变。
以下是它的外观:
你可以看到在 set_inner 功能的当前帧中创建了新的绑定,但是我希望能够显示父级的绑定。
我希望我已经明确表达了我想做的事情。
提前感谢。
编辑:
感谢MartijnPieters,我所要做的就是放置非本地声明:
def test():
inner = 'value'
def get_inner():
return inner
def set_inner(v):
nonlocal inner
inner = v
return get_inner, set_inner
现在它改变了父框架中的绑定