为什么输出不是1和1?

时间:2021-01-27 06:32:26

标签: python python-3.x

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

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

它给了

0 1

应该是

1 1

为什么会这样?

1 个答案:

答案 0 :(得分:0)

test 函数内部,您实际上并未初始化一个新的 Test 对象,因此 Python 将通读类定义以在函数作用域内使用它,因此它确实执行了打印语句.问题是您正试图更改类范围内 a 的值,这会生成在函数定义之外采用 a 的先前值。