【发布时间】:2020-09-21 14:36:44
【问题描述】:
考虑这个函数:
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
列表似乎在内部函数范围内,而值不在。为什么会这样?
【问题讨论】: