This question already has answers here:

UnboundLocalError while using += but not append list [duplicate]
(2个答案)
第一个代码片段打印出来。
def func():
    a = [0]

    def swim():
        a.append(3)
        # a = [1]+a
        return a
    return swim()

print(func())

第二个代码段引发错误“unbundlocalerror:赋值前引用的局部变量'a'”
def func():
    a = [0]

    def swim():
        # a.append(3)
        a = [1]+a
        return a
    return swim()

print(func())

究竟[0, 3]是否可见/可用于功能a

最佳答案

这似乎是this link中所述的常见问题。原因是一旦有一个赋值给a时,swim内部的变量a就成为一个局部变量它隐藏外部a,并且在函数a中赋值之前未定义局部swim,因此错误增加。
谢谢你们的回答!

07-25 21:40