Python中的命名空间是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python中的命名空间是啥?相关的知识,希望对你有一定的参考价值。

命名空间是从名称到对象的映射,大部分的命名空间都是通过Python字典来实现的。
命名空间提供了在项目中避免名字冲突的一种方法,各个命名空间是独立的,没有任何关系的,所以一个命名空间中不能有重名,但不同的命名空间是可以重名而没有任何影响。
Python命名空间分类
Python程序执行期间会有两个或者三个活动的命名空间,按照变量定义的位置,可以划分为以下3类:
内置名称:built-in names,Python语言内置的名称,比如函数abs、char和异常名称BaseException、Exception等。
全局名称:global names,模块中定义的名称,记录了模块的变量,包括函数、类、其它导入的模块、模块级的变量和常量。
局部名称:local names,函数中定义的名称,记录了函数的变量,包括函数的参数和局部定义的变量。
Python命名空间生命周期
local names,在函数被调用时才被创建,但函数返回结果或抛出异常时被删除。
global names,在模块被加载时创建,通常一直保留,直到Python解释器退出。
built-in names,在Python解释器启动时创建,一直保留到解释器退出。
各个命名空间创建顺序:Python解释器启动—创建内建命名空间-加载模块-创建全局命名空间-函数被调用-创建局部命名空间。
各个命名空间销毁顺序:函数调用结束-销毁函数对应的局部命名空间-Python解释器退出-销毁全局命名空间-销毁内建命名空间。
参考技术A 编程语言中的命名空间简单来说就是一些词的集合,
同一个词在不同的命名空间会有不同的意思,
用一个词来做例子
“手纸”在中文这个命名空间是厕纸的意思,
而在日文这个命名空间是信的意思。

这个算是过分简化的说明了。

以上是关于Python中的命名空间是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Rails 中的命名空间模型:联合的状态是啥?

下一代门的命名空间前缀、源类型 URI、OSLC 中的链接属性是啥?

vuex中模块的命名空间到底是啥

错误是啥:与命名空间 public 中的继承定义 flash.display:DisplayObject.mouseX 存在冲突?

类和命名空间是啥关系

C++ 中命名空间别名的范围是啥?