scope_namespace
目录
Python中的作用域和命名空间是两个密切相关的概念。我们首先从命名空间开始,然后讨论作用域。
1. 命名空间 (Namespace):
命名空间是一个从名字到对象的映射。大部分的命名空间都是在Python字典中实现的。常见的命名空间类型有以下几种:
- 局部命名空间:特定函数内部的命名空间。
- 全局命名空间:模块级别的命名空间。
- 内置命名空间:包含内置函数和异常名的命名空间。
2. 作用域 (Scope):
作用域是一个Python程序文本区域,从这个区域可以直接访问命名空间内的名字。作用域的种类有:
- 局部作用域 (Local Scope):在函数内部。
- 封闭作用域 (Enclosing Scope):包围其他作用域的作用域。这是对于嵌套函数而言的。
- 全局作用域 (Global Scope):在模块顶层。
- 内置作用域 (Built-in Scope):包含所有内置名字的作用域。
LEGB规则:
当在Python中引用一个名字时,Python会按照LEGB规则搜索这个名字:首先是局部作用域,然后是封闭作用域,接着是全局作用域,最后是内置作用域。
示例:
x = 10 # 全局变量
def outer_function():
y = 5 # 封闭作用域变量
def inner_function():
z = 3 # 局部变量
print(x, y, z)
inner_function()
outer_function()
在上述代码中,inner_function
可以访问所有三个变量:x
、y
和z
,因为它遵循LEGB规则。
关键点:
global
关键字可以用于在函数内部声明变量为全局变量。nonlocal
关键字可以用于在嵌套函数中指示变量来自封闭作用域。
这两个关键字都允许在更外层的作用域中修改变量。
希望这可以帮助您理解Python的作用域和命名空间!