Python变量查找遵循LEGB规则:按Local(局部)、Enclosing(嵌套)、Global(全局)、Built-in(内置)顺序逐层向上搜索,理解该规则有助于预测变量值、避免命名冲突、提升代码清晰度。
Python变量查找遵循LEGB规则,即按Local(局部)、Enclosing(嵌套)、Global(全局)、Built-in(内置)的顺序逐层向上搜索。理解这个模型,能帮你准确预测变量值、避免命名冲突、写出更清晰的代码。
在函数体内用赋值语句创建的变量,默认属于局部作用域。每次调用函数都会新建一个局部作用域,函数退出后变量自动销毁。
当一个函数定义在另一个函数内部时,内层函数可以访问外层函数的变量,这种非全局又非局部的范围叫Enclosing作用域。
在.py文件最外层(不在任何函数或类中)定义的变量,属于该模块的全局作用域。同一模块内所有函数默认可读取全局变量。
Python启动时自动加载的一组内置名称,比如print、len、int、Exception等。它们位于作用域链最末端,仅当前面三层都找不到时才启用。
LEGB不是语法强制,而是名字解析的隐式逻辑。写代码时,优先考虑用参数传入数据、减少对全局/外层变量的依赖,能让作用域边界
更清晰,调试和测试也更容易。