我尝试创建闭包,其中父框架中存在名称为内部的绑定,只能使用我通过返回提供的方法访问。这是我的代码:
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,我所要做的就是放置 nonlocal声明:
def test():
inner = 'value'
def get_inner():
return inner
def set_inner(v):
nonlocal inner
inner = v
return get_inner, set_inner
现在它改变了父框架中的绑定