名称空间
1.三种名称空间用途与存货周期
2.三种名称空间的加载顺序
3.三种名称空间的查找名字的优先级
名称空间存放在栈区里面,栈区存放了三种名称空间,分别为:
内置名称空间,全局名称空间,局部名称空间
1.内置名称空间
例如:print,input
存货周期:python解释器 启动则产生,解释器关闭则销毁。
2.全局名称空间:
运行顶级代码所产生的名字,或者说不是函数内定义,也非内置的就是全局名称空间
python是靠缩进进行嵌套代码的,顶级代码就是第一级代码,非嵌套代码。
例如:
x=10
def func():
a=1
b=2
这里func和x就是全局名称空间存储的,但a和b是局部名称空间。
存货周期:python文件执行则产生,运行完毕便销毁。
3.局部名称空间
在调用函数时,运行函数体代码过程中产生的函数内的名字。
存货周期:在调用函数时存货,函数调用完毕后摧毁。
名称空间加载顺序:
内置名称空间》 全局名称空间 》 局部名称空间
销毁顺序:
局部名称空间》 全局名称空间 》内置名称空间
名字的查找优先级:
内置名称空间》 全局名称空间 》 局部名称空间
全局作用域与局部作用域
按照名字作用范围的不同可以将三个名称空间划分为两个区域:
- 全局作用域:位于全局名称空间、内建名称空间中的名字属于全局范围,该范围内的名字全局存活(除非被删除,否则在整个文件执行过程中存活)、全局有效(在任意位置都可以使用);
- 局部作用域:位于局部名称空间中的名字属于局部范围。该范围内的名字临时存活(即在函数调用时临时生成,函数调用结束后就释放)、局部有效(只能在函数内使用)。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!