【问题标题】:Why is the output not 1 and 1? [duplicate]为什么输出不是 1 和 1? [复制]
【发布时间】:2021-01-27 06:32:26
【问题描述】:
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。希望有人能解释原因。
  • 这能回答你的问题吗? Weird scoping behavior in python

标签: python python-3.x


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2020-05-11
    • 2018-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-02
    • 2020-03-14
    相关资源
    最近更新 更多