(十五)名称空间与作用域

名称空间和作用域

  1. 名称空间(namespace) 是存放名字与值绑定关系的地方
  2. 分类:
  • 内置名称空间
    存放python解释器内置名字,比如内置函数名:len, max,sum.

创建:随着python解释器的启动而创建

销毁:随着python解释器的关闭而销毁

  • 全局名称空间
    存放文件级别的名称,比如

    x=1
    def f1():
    x=1
    if x==1:

    创建: 文件开始执行时

销毁:文件执行完毕时

  • 局部名称空间
    存放函数内的名字,需要强调的是函数的参数也属于局部的

创建:函数执行时才临时创建
销毁:函数执行完毕则立即销毁。

def f1()
    x=1
f1()
  1. 名称空间的加载顺序

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

  1. 名称空间的查找名字顺序

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

按照顺序依次注释掉len,看实验效果。


len=10                      5.
def f1():
    len=100                 3.
    def f2():
        len=1000            2.
        def f3():
            len=10000       1.
            print(len)
        f3()
    f2()
len=1111111111              4
f1()
  1. 名字的查找关系在函数定义阶段
  2. global只能改全局的
    nolocal 会从当前层的外一层开始查找,一直找到最外层的函数

猜你喜欢

转载自www.cnblogs.com/morron/p/9048930.html
今日推荐