2.2 KiB
2.2 KiB
Python 命名空间和变量范围解析(LEGB)
原文:https://www.askpython.com/python/python-namespace-variable-scope-resolution-legb
在本教程中,我们将学习 Python 命名空间、变量的作用域以及变量作用域解析的规则。
什么是 Python 命名空间?
Python 名称空间是将名称映射到对象的容器。在 Python 中,一切都是一个对象,我们给对象指定一个名称,这样我们以后就可以访问它。
您可以将名称空间看作是一个键-值对的字典,其中键是变量名,值是与之关联的对象。
namespace = {"name1":object1, "name2":object2}
在 Python 中,可以同时存在多个独立的名称空间。变量名可以在这些名称空间中重用。
function_namespace = {"name1":object1, "name2":object2}
for_loop_namespace = {"name1":object3, "name2":object4}
让我们看一个简单的例子,其中我们有多个名称空间。
Python Namespace Example
Python 命名空间类型和生命周期
Python 名称空间可以分为四种类型。
- 本地名称空间:函数、for-loop、try-except 块是本地名称空间的一些例子。当函数或代码块完成执行时,本地命名空间被删除。
- 封闭的名称空间:当一个函数被定义在一个函数内部时,它会创建一个封闭的名称空间。它的生命周期与本地名称空间相同。
- 全局命名空间:属于 python 脚本或者当前模块。模块的全局命名空间是在读取模块定义时创建的。通常,模块名称空间也会持续到解释器退出。
- 内置名称空间:内置名称空间是在 Python 解释器启动时创建的,永远不会被删除。
Python 变量范围
Python 变量作用域定义了我们搜索变量的层次结构。例如,在上面的程序中,变量存在于不同的名称空间中。当我们想通过变量名访问变量值时,就在名称空间层次结构中进行搜索。
