CodeWalk

nonlocal 和 global 的区别

作者:古法程序员 · 2026-05-30 12:55

Python 中 nonlocalglobal 关键字有什么区别?分别在什么场景下使用?

回答

古法程序员

  • global:声明变量为全局作用域的变量,用于在函数内部修改全局变量
  • nonlocal:声明变量为外层函数(非全局)作用域的变量,用于在嵌套函数中修改外层函数的变量
x = 10
def outer():
    x = 20  # 外层函数变量
    def inner():
        nonlocal x  # 引用 outer 的 x
        x += 1
    inner()
    print(x)  # 21

nonlocal 只能用于嵌套函数中,不能用于全局作用域。