名称空间


目录
  • 名称空间
  • 存活周期
  • 名字的查找顺序
  • 名称空间的作用域

名称空间

# 什么是名称空间空间(namespaces)
用于存放变量名与变量值绑定关系的地方

# 名称空间的分类
1.内置名称空间
python提前定义好的,只需要调用即可.
eg: print(), len()...
  
2.全局名称空间
在python文件中顶格编写的代码运行之后都会存入全局名称空间
name = 'junjie' # name 全局
def func():
  pass
if 1:
  a = 123 # a 全局
for i in range(10):
  pringt(i) # i 全局
while True:
  a = 123 # a 全局
  
3.局部名称空间
函数体代码运行之后产生的都是局部名称空间

存活周期

1.内置名称空间
pyhon解释器启动与关闭而创建和销毁
2.全局名称空间
随着py文件的运行与结束而创建和销毁
3.局部名称空间
随着函数体代码的执行与结束而创建和销毁

名字的查找顺序

# 在查找名字的时候,要先确定自己当前在哪
1. 如果在局部
局部>>>全局>>>内置
2.如果在全局
全局>>>内置

# 拓展
# 局部名称空间的嵌套
'''函数在定义阶段名字的查找顺序就已经固定死了'''
x = 111
def f1():
    x = 222
    def f2():
        x = 333
        def f3():
            x = 444
            def f4():
                x = 555
                print(x)
            f4()
        f3()
    f2()
f1()
# 输出 555 
如果 x = 555 在print(x)的下面,那么输出是报错.

名称空间的作用域

作用域:名称空间所能够作用的范围
内置名称空间:
  程序任何阶段任何位置均可使用(全局有效)
全局名称空间:
  程序任何阶段任何位置均可使用(全局有效)
局部名称空间:
  一般情况下只在各自的局部名称空间中有效。