一个函数返回另一个函数为什么里面的函数可以限定父级列表而不是常量的范围?

问题描述

考虑此功能:

def g():
    x = []
    
    def f():
        x.append([0])
        print(x)
        pass
    return f

调用:

test = g()
test()

我得到以下输出:

Out: [[0]]

我们可以重新初始化测试函数并多次调用:

test = g()
for i in range(3):
    test()

产生以下输出:

Out: [[0]]
[[0],[0]]
[[0],[0],[0]]

但是,定义以下功能:

def j():
    x = 1
    def f():
        x += 1
        print(x)
        pass
    return f

并调用它:

test = j()
test()

导致错误:

UnboundLocalError: local variable 'x' referenced before assignment

列表似乎在内部函数作用域中,而值不在。为什么会这样?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)