命名空间和作用域链
Posted albatorss
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了命名空间和作用域链相关的知识,希望对你有一定的参考价值。
一。命名空间
1.内置命名空间
就是python解释器一启动就可以使用的名字,存储在内置命名空间中
内置的名字在启动解释器的时候被加载进内存里
2.全局命名空间
是在程序从上到下被执行的过程中一次加载进内存的
放置了我们设置的所有变量名和函数名
3.局部命名空间
就是函数内部定义的名字
当调用函数的时候 ,才会产生这个名称空间,随着函数执行的结束,这个命名空间又消失了
4.#
1.在正常情况下,直接使用内置的名字
2.当我们在全局定义了和内置名字空间中同名的名字的时候,会使用全局的名字
3.当我自己有的时候,我就不找我上级要了
4.如果自己没有,就找上一级要,上一级如果没有,再找上一级,如果内置的名字空间都没有,就报错
5.多个函数应该拥有多个独立的局部名字空间,不相互分享
二。作用域
1.全局作用域
作用在全局,内置湖人全局名字空间中的名字都属于全局作用域----------globals()
2.局部作用域
作用在局部,函数(局部名字空间中的名字属于局部作用域)----------locals()
3.#
1.对于不可变数据类型,在局部可以查看全局作用域中的变量,但是不能直接修改
2.如果想要修改,需要在程序的一开始添加global声明
3.如果在一个局部(函数)内声明了一个global变量,那么这个变量在局部的所有操作将对全局的变量有效
4.globals
永远打印全局的名字
5.locals
local 本地的
所以当local写在全局作用域时打印全局的名字
当;local写在局部作用域时打印局部的名字
以上是关于命名空间和作用域链的主要内容,如果未能解决你的问题,请参考以下文章