九名称空间作用域
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了九名称空间作用域相关的知识,希望对你有一定的参考价值。
名称空间
就是存放名字的一个地方
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 内置模块的名字空间
以上是关于九名称空间作用域的主要内容,如果未能解决你的问题,请参考以下文章