在 Python 中,所有名称都存在于它们存在和被操纵的空间中——这就是命名空间。它就像一个盒子,每个变量名对应一个对象。查询变量时,会从框中找到对应的对象。
【定义】
名称到对象的映射。命名空间是字典的实现,其中键是变量名,值是变量对应的值。每个命名空间都是独立且不相关的。命名空间不能具有相同的名称,但不同的命名空间可以具有相同的名称而不会产生任何影响。
【分类】
在 python 程序执行期间将有 2 或 3 个命名空间处于活动状态(函数调用时为 3 个,函数调用结束后为 2 个)。根据变量定义的位置,可以分为以下三类:
local,局部命名空间,每个函数所拥有的命名空间,记录了函数中定义的所有变量,包括函数的输入参数和内部定义的局部变量。
Global,全局命名空间,在每个模块加载和执行时创建,记录模块中定义的变量,包括模块中定义的函数、类、其他导入的模块,以及模块级的变量和常量。
内置,python自带的内置命名空间,可以被任何模块访问,包含内置函数和异常。
【生命周期】
Local(本地命名空间)在函数被调用时创建,但在函数返回结果或抛出异常时被删除。 (每个递归函数都有自己的命名空间)。
全局(全局命名空间)是在加载模块时创建的,通常会一直保留到 python 解释器退出。
内置(内置命名空间)在 python 解释器启动时创建,并一直保留到解释器退出。
每个命名空间的创建顺序:python解释器启动->创建内置命名空间->加载模块->创建全局命名空间->函数调用->创建本地命名空间
各个命名空间的销毁顺序:函数调用结束->销毁函数对应的本地命名空间->python虚拟机(解释器)退出->销毁全局命名空间->销毁内置命名空间
模块的内置命名空间和全局命名空间是在 python 解释器的加载阶段创建的。本地命名空间是在运行时调用函数时动态创建的,并在函数调用结束时动态销毁。
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ python中的pip包管理器使用方法10/01
- ♥ 如何在python3中编写布局背景色代码?12/15
- ♥ python如何连接redis11/04
- ♥ python中如何判断所有函数的输出结果为真?10/31
- ♥ 如何使用python的格式08/20
- ♥ python如何操作表12/22
内容反馈