带你一分钟搞懂命名空间,再也不怕找不到变量在哪了

带你一分钟搞懂命名空间,再也不怕找不到变量在哪了|名称空间名称空间又名 name space顾名思义就是存放名字的地方,那名称空间又存什么名字呢?举例说明,若变量a=100,100存放于内存中

欢迎大家来到IT世界,在知识的湖畔探索吧!

|名称空间

名称空间又名 name space

顾名思义就是存放名字的地方,那名称空间又存什么名字呢?

举例说明,若变量a=100,100存放于内存中,那变量的名字a存放在哪里呢?

名称空间正是存放变量名字a与100绑定关系的地方。

python里面有很多名字空间,每个地方都有自己的名字空间互不干扰,不同空间中的两个相同名字的变量之间没有任何联系。

带你一分钟搞懂命名空间,再也不怕找不到变量在哪了

|名称空间有4种

locals

函数内部的名字空间,一般包括函数的局部变量以及形式参数

enclosing function

在嵌套函数中外部函数的名字空间,若f2函数嵌套在f1函数中,对f2来说,f1的名字空间就是enclosing

globals

当前的模块空间,模块就是一些py文件,也就是说 globals是全局变量

builtins

内置模块空间,也就是内置变量或者内置函数的名字空间, print(dir(__builtins__))可查看包含的值

带你一分钟搞懂命名空间,再也不怕找不到变量在哪了

不同变量的作用域不同就是由这个变量所在的名称空间决定的

作用域即范围

全局范围:全局存活,全局有效

局部范围:临时存活,局部有效

查看作用域方法

gobals 看全局

localsl 看局部

查询顺序

LEGB

即:locals–> enclosing function–>globals–>builtins

案例说明

level1 = "global"
age = 11
def func():
    level2 = "local"
    age = 22
    print("func:", locals(), age)
    def outer():
        level3 = "outer"
        age = 33
        print("outer:", locals(), age)
        def inner():
            level4 = "inner"
            age = 44
            print("inner:", locals(), age)
        inner()
    outer()

func()
print(age)

欢迎大家来到IT世界,在知识的湖畔探索吧!

带你一分钟搞懂命名空间,再也不怕找不到变量在哪了

当inner函数中没有定义age

带你一分钟搞懂命名空间,再也不怕找不到变量在哪了

当outer函数中没有定义age

带你一分钟搞懂命名空间,再也不怕找不到变量在哪了

只有全局变量有定义age

带你一分钟搞懂命名空间,再也不怕找不到变量在哪了

当全局也没有定义时,此时替换变量为Python内置的值

带你一分钟搞懂命名空间,再也不怕找不到变量在哪了

一分钟学会LEGB,是不是做到了,哈哈哈。

带你一分钟搞懂命名空间,再也不怕找不到变量在哪了

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/37170.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信