名称空间

一、名称空间

  名称空间定义:名称空间就是存放名字的地方,是对栈区的划分,即是存放名字的地方与对象映射/绑定关系的地方

  名称空间可划分为三种:内置名称空间、全局名称空间、局部名称空间

二、内置名称空间

  存放的名字:存放的是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()

posted @ 2021-01-17 01:35  A熙  阅读(327)  评论(0)    收藏  举报