为什么输出不是1和1?

5
a = 0
b = 0
def test():
    a = 1
    b = 1

    class Test:
        print(a, b)
        a = 2
test()

它提供了

0 1

我应该这样做

1 1

为什么会发生这种情况?


我也不确定,但当我在Test中使用nonlocal anonlocal b时,它输出1,1。希望有人能解释一下为什么。 - yudhiesh
4
这回答你的问题吗?Python 中奇怪的作用域行为 - Tsubasa
1个回答

0
test函数内部,您实际上没有初始化一个新的Test对象,因此Python将读取类定义以在函数作用域内使用它,因此它会执行打印语句。问题在于您试图在类作用域中更改a的值,这会导致a获取函数定义外的先前值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接