0

我尝试创建闭包,其中父框架中存在名称为内部的绑定,只能使用我通过返回提供的方法访问。这是我的代码:

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

现在它改变了父框架中的绑定

4

0 回答 0