名称空间
一、名称空间
名称空间定义:名称空间就是存放名字的地方,是对栈区的划分,即是存放名字的地方与对象映射/绑定关系的地方
名称空间可划分为三种:内置名称空间、全局名称空间、局部名称空间
二、内置名称空间
存放的名字:存放的是python解释器内置的名字
存活周期:python解释器启动后产生,关闭后回收
三、全局名称空间
存放的名字:不是函数内定义,也不是内置的,剩下的都是全局名称空间的名字
存活周期:执行python问件时产生,python文件运行完成后回收
四、局部名称空间
存放的名字:在调用函数时,运行函数体代码的过程中产生的函数内的名字
存活周期:在调用函数时产生,在函数调用完毕后回收
五、名称空间的加载顺序和回收顺序
加载顺序:内置名称空间---全局名称空间---局部名称空间
回收顺序:局部名称空间---全局名称空间---内置名称空间
六、名称空间查找的优先级
优先级:从当前的位置向上一层一层的查找
例如:当前为局部名称空间,则先在局部名称空间中查找,没有找到则在到全局名称空间中查找,如果还没有则在内置名称空间中查找,再没有则报错
x = 100 # 在函数外,并且也不是内置的名称空间,表示是全局名称空间
def func():
x = 200 # 在函数内,表示为局部名称空间
print(x) # 输出结果为:200,当前在局部名称空间中,先查找局部的,如果没有在找去全局的,如果全局还没有在找内置的
func()
当前为全局名称空间,则现在全局名称空间中查找,没有找到则在内置名称空间中查找,再没有则报错
x = 100 # 全局
def func():
x = 200 # 局部
print(x) # 输出结果为200,当前在局部名称空间中,所以为200
print(x) # 输出结果为100,当前在全局名称空间中,这是还没有进行func的调用,所以为100
func()
七:名称空间查找的嵌套关系
名称空间的嵌套关系:是以函数定义为准,与调用位置无关
x = 100 # 全局名称空间
def func():
print(x) # 输出结果为100,当前在局部名称空间中,func是全局名称空间,这里以函数定义位置,所以找的是全名称名空间
def func1():
x = 200
func()
func1()
浙公网安备 33010602011771号