深入理解Python的作用域、命名空间与模块
1. 命名空间和作用域
在Python中,命名空间(namespace)和作用域(scope)是理解变量生命周期和可见性的关键概念。命名空间是Python中用于存储变量名及其对应对象的映射。作用域则定义了在特定区域中可以访问哪些变量。Python遵循LEGB规则来决定变量的查找顺序,即局部(Local)、封闭(Enclosing)、全局(Global)和内置(Built-in)。
1.1 LEGB规则详解
LEGB规则决定了Python在查找变量时的顺序:
- L(Local) :首先在当前函数的局部作用域中查找。
- E(Enclosing) :如果不在局部作用域中找到,则在任何封闭的函数中查找。
- G(Global) :接着在全局作用域中查找。
- B(Built-in) :最后在内置作用域中查找。