嵌套函数的 UnboundLocalError 未为 Python 中的属性引发

我已经简要地浏览了几十个关于UnboundLocalErrorpython 嵌套函数的qus ,我以为我理解了,直到我用自定义类实例尝试它


def fn1():

    a = 1


    def fn1a():

        print(a)

        a += 1

        print(a)


    fn1a()



class B:

    v = 1



def fn2():

    b = B()


    def fn2a():

        print(b.v)

        b.v += 1

        print(b.v)


    fn2a()



fn2()  # prints 1 then 2

fn1()  # raises UnboundLocalError

为什么错误没有被提出fn2?


智慧大石
浏览 173回答 1
1回答

慕姐4208626

因为您没有分配给非本地名称。你用过一个,但没关系;您分配了它的一个属性,而没有更改名称本身所绑定的内容。请注意,如果b是列表或字典并且您修改了其成员之一,则这将完全相同。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python