第一个代码段打印[0, 3]
。
def func():
a = [0]
def swim():
a.append(3)
# a = [1]+a
return a
return swim()
print(func())
第二个代码段引发错误" UnboundLocalError:局部变量' a'在分配之前引用"
def func():
a = [0]
def swim():
# a.append(3)
a = [1]+a
return a
return swim()
print(func())
a
功能swim
是否可见{/ 1}}
答案 0 :(得分:2)
这似乎是this link中所述的常见问题。原因是只要有a
的赋值,swim
内的变量a
就会成为局部变量。它会影响外部a
,并且在函数a
中赋值之前未定义本地swim
,因此错误会增加。
感谢你们所有人'解答!
答案 1 :(得分:-2)
您在第一个代码中附加了一个元素。 id
的{{1}}仍然相同。
但是在第二个代码中,您正在重新定义变量a
,它正在更改该变量的a
。这样你得到id
。
答案 2 :(得分:-2)
当您在作用域中执行a = [1] + a
或a += [1]
等分配时,该变量将成为该作用域的本地变量。在您的情况下,这是函数swim()
。