命名空间:
命名空间是一个从名称到对象的映射,用于查找变量名的位置。Python 中有多个命名空间,其中最重要的有:
1. 内置命名空间(Built-in Namespace): 包含了内置的函数和异常等。
2. 全局命名空间(Global Namespace): 包含了在模块级别定义的变量和函数。
3. 局部命名空间(Local Namespace): 包含了在函数或类中定义的变量和函数。
作用域:
作用域定义了变量名的可见性和生命周期。Python 中主要有以下作用域:
1. 局部作用域(Local Scope): 在函数内部定义的变量拥有局部作用域,只在函数内部可见。
2. 嵌套作用域(Enclosing Scope): 在嵌套的函数中,内部函数可以访问外部函数的变量,但外部函数不能访问内部函数的变量。
3. 全局作用域(Global Scope): 在模块级别定义的变量拥有全局作用域,整个模块内都可见。
4. 内置作用域(Built-in Scope): 包含了 Python 的内置函数和异常等,是最高级别的作用域。
LEGB 规则:
在 Python 中,变量的查找顺序遵循 LEGB 规则:
- Local Scope: 在函数内部定义的局部变量。
- Enclosing Scope: 包含了非全局(非内置)嵌套函数的作用域。
- Global Scope: 在模块级别定义的变量。
- Built-in Scope: 包含了内置的函数和异常。
示例:
x = 10 # 全局变量
def outer_function():
y = 20 # outer_function 的局部变量
def inner_function():
z = 30 # inner_function 的局部变量
print(x + y + z) # 可以访问全局、外部函数的变量
inner_function()
outer_function()
在这个示例中,inner_function 可以访问全局变量 x、外部函数 outer_function 的局部变量 y,以及自身的局部变量 z。
理解命名空间和作用域有助于更好地组织代码,防止变量冲突,以及理解变量在不同位置的可见性。
转载请注明出处:http://www.zyzy.cn/article/detail/13278/Python3