python 变量作用域的嵌套问题?

a=1
def first():
    global a
    b=2
    
    a=b
    def second():
        c=3
        
        b=c
        print(b)
    
    second()
    print(b)

first()

输出为 3 2
这里 first函数里 通过 global 引用全局变量a 并成功赋值,那second函数里怎么修改first里的变量b呢?

阅读 3.4k
2 个回答

可以看一下nonlocal.
https://docs.python.org/3/ref...

a=1
def first():
    global a
    b=2

    a=b
    def second():
        c=3

        nonlocal b
        b=c
        print(b)

    second()
    print(b)

first()

second的b是作用于second的局部变量和first里的b不是同一对象

second()
print(b)

你看你second里重新复制后最后print(b)不还是2么,没毛病。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题