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

九、名称空间、作用域

时间:2017-11-26 18:41:48      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:名称   生效   内置模块   解释   name   提示   cti   global   空间   

名称空间

  就是存放名字的一个地方

a = 1
开辟内存,存入1,a 指向 1的内存地址
a存放在名称空间,存的是a和1的绑定关系

 

三种名称空间:

  一、内置名称空间

python自带的都存放在这,解释器启动后就加载生成该名称空间存放内置的名字,关闭解释器就失效
如:print、len、max

  二、全局名称空间

在文件级别定义的,都会存在全局名称空间
在执行py文件时就会生成该名称空间,name就生效,程序运行完毕就失效
如:text.py中顶头写,不缩进: name = ‘shuai‘
这个name就存放在该空间

  三、局部名称空间

在代码块中定义的名字
如:函数内部定义的
    def foo(x):
        print(x)
    doo(3)

这里的x就是在局部名称空间中,只有调用函数才生效,函数结束就失效

  加载顺序:内置--->全局--->局部

  取值顺序:从当前使用位置向上一层层找  如在函数:内置<---全局<---局部;如果都没有的话就提示NameError

 

作用域:

作用范围:
    全局范围(内置名称空间与全局名称空间属于该范围):全局有效
    局部范围(局部名称空间属于该范围):局部有效

作用域关系是在函数定义阶段就已经固定的,与函数的调用位置无关

查看作用域:
  LEGB 代表名字查找顺序: locals -> enclosing function -> globals -> __builtins__
  locals 是函数内的名字空间,包括局部变量和形参
  enclosing 外部嵌套函数的名字空间(闭包中常见)
  globals 全局变量,函数定义所在模块的名字空间
  builtins 内置模块的名字空间

  

 

九、名称空间、作用域

标签:名称   生效   内置模块   解释   name   提示   cti   global   空间   

原文地址:http://www.cnblogs.com/Mr-chenshuai/p/7899630.html

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