参考资料:
GPT的回答
在 Python 中,函数的变量解析遵循特定的顺序,通常称为 "LEGB" 规则。LEGB 分别代表四个作用域:
Local (本地): 函数内部定义的变量。
Enclosing (闭包): 嵌套函数中外层函数的变量。
Global (全局): 模块(文件)级别定义的变量。
Built-in (内置): Python 提供的内置名称,如 len(), print(), list 等。
搜索顺序的解释
Local: 首先,Python 会在 inner_function 中查找 x,并找到本地定义,即 x = "Local"。
Enclosing: 如果 inner_function 中没有找到 x,它会查找 outer_function 中的 x。
Global: 如果在 outer_function 中也找不到,那么它会查找 x 在全局作用域中的值(x = "Global")。
Built-in: 最后,如若不行,Python 会查找内置名称。
注意事项
如果你在函数内部试图修改一个全局变量,你需要使用 global 关键字来指明 Python 使用的是全局变量,而不是创建一个新的本地变量。