名称空间

​ 1.三种名称空间用途与存货周期

​ 2.三种名称空间的加载顺序

​ 3.三种名称空间的查找名字的优先级

名称空间存放在栈区里面,栈区存放了三种名称空间,分别为:

​ 内置名称空间,全局名称空间,局部名称空间

image-20210909154939000

1.内置名称空间

​ 例如:print,input

​ 存货周期:python解释器 启动则产生,解释器关闭则销毁。

2.全局名称空间:

​ 运行顶级代码所产生的名字,或者说不是函数内定义,也非内置的就是全局名称空间

​ python是靠缩进进行嵌套代码的,顶级代码就是第一级代码,非嵌套代码。

例如:

x=10

def func():

a=1

b=2

这里func和x就是全局名称空间存储的,但a和b是局部名称空间。

存货周期:python文件执行则产生,运行完毕便销毁。

3.局部名称空间

​ 在调用函数时,运行函数体代码过程中产生的函数内的名字。

​ 存货周期:在调用函数时存货,函数调用完毕后摧毁。

名称空间加载顺序:

 内置名称空间》 全局名称空间 》 局部名称空间

销毁顺序:

​ 局部名称空间》 全局名称空间 》内置名称空间

名字的查找优先级:

​ 内置名称空间》 全局名称空间 》 局部名称空间

全局作用域与局部作用域

按照名字作用范围的不同可以将三个名称空间划分为两个区域:

  1. 全局作用域:位于全局名称空间、内建名称空间中的名字属于全局范围,该范围内的名字全局存活(除非被删除,否则在整个文件执行过程中存活)、全局有效(在任意位置都可以使用);
  2. 局部作用域:位于局部名称空间中的名字属于局部范围。该范围内的名字临时存活(即在函数调用时临时生成,函数调用结束后就释放)、局部有效(只能在函数内使用)。

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!