码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-05-17 11:35:00      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:==   关系   cal   函数定义   lob   mes   oba   依次   函数的参数   

名称空间和作用域

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

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

标签:==   关系   cal   函数定义   lob   mes   oba   依次   函数的参数   

原文地址:https://www.cnblogs.com/morron/p/9048930.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!