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

Posted Morron--漠然随笔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(十五)名称空间与作用域相关的知识,希望对你有一定的参考价值。

名称空间和作用域

  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 会从当前层的外一层开始查找,一直找到最外层的函数

以上是关于(十五)名称空间与作用域的主要内容,如果未能解决你的问题,请参考以下文章

函数作用域与名称空间

013.Python之函数嵌套名称空间与作用域闭包函数

python 函数的名称空间及作用域

三 名称空间与作用域

python 14 名称空间与作用域

函数的名称空间和作用域