python之名称空间(命名空间)知识点整理

命名空间的定义names)名称空间:命名空间的加载顺序内置(Built-in)名称空间全局()名称空间局部(local)名称空间取值顺序->LEGB原则局部(local)名称空间非本地()名称空间全局()名称空间内置(Built-in)名称空间在内层方法中可以直接引用全局()名称空间和非本地()名称空间中的对象。在内层方法修改全局()名称空间和非本地()名称空间中的对象会报错。

以下为知识DOC为大家进行整理的相关内容,希望对大家有所帮助!

命名空间的定义

解释器在加载py文件时在内存中开辟的空间空间名称,该空间使用字典来存放对象与值。字典的键保存了py文件中的变量名、方法名、类名及其他环境变量名,对应的值保存了该对象的值(或内存地址或None)。

print(globals())out:{'__name__': '__main__', '__doc__': None, '__package__': None,     '__loader__': ,     '__spec__': None, '__annotations__': {}, '__builtins__': ,     '__file__': 'd:/Python/函数/关于函数的案例.py', '__cached__': None}

命名空间的分类全局( names)名称空间:局部(Local names)名称空间:内置(Built-in names)名称空间:命名空间的加载顺序内置(Built-in)名称空间全局()名称空间局部(local)名称空间取值顺序->LEGB原则

调用对象时会按如下顺序查找:

局部(local)名称空间非本地()名称空间全局()名称空间内置(Built-in)名称空间

经过以上四步未能找到该对象名字时就会报错。

在同一个名称空间下,名字和对象是一 一对应的。在不同名称空间下,一个名字可以存在三个对象:局部对象、非本地对象、全局对象,会按照LEGB原则就近查找。

text = 123def out():    text = 456    print('out',text)    def inner():        text = 789        print('inner',text)    inner()out()print(text)out:out 456inner 789123

关于和

在内层方法中可以直接引用全局()名称空间和非本地()名称空间中的对象。

text1 = '全局名称空间变量'def out():    text2 = '外层名称空间变量'    def inner():        print(text1)        print(text2)    inner()out()out:全局名称空间变量外层名称空间变量

在内层方法修改全局()名称空间和非本地()名称空间中的对象会报错。

text1 = '全局名称空间变量'def out():    text2 = '外层名称空间变量'    def inner():# UnboundLocalError: local variable 'text1' referenced before assignment        text1 += '在内层打印'# UnboundLocalError: local variable 'text2' referenced before assignment        text2 += '在内层打印'          print(text1)        print(text2)    inner()out()

如果确实需要修改空间名称,必须先声明空间名称,然后才能修改。

另外,通过声明可以在内层方法创建全局变量。

text1 = '全局名称空间变量'def out():    text2 = '外层名称空间变量'    def inner():        global text1        nonlocal text2        text1 += '在内层修改'        text2 += '在内层修改'        global text3        text3='方法内创建的全局变量'        print(text1)        print(text2)    inner()out()print(text3)out:全局名称空间变量在内层修改外层名称空间变量在内层修改方法内创建的全局变量

本文地址: https://www.zhishidoc.com/33226.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 859089669@qq.com 举报,一经查实,本站将立刻删除。

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年11月6日 下午12:32
下一篇 2022年11月6日 下午12:35

相关推荐

  • 早安语录经典好句 意义深远的早安句子

    点击上面的蓝色字体“早安语录正能量励志句子”再点击“关注”这样您就可以每天观看早安语录正能量励志句子。1、生命在路上,轻轻告诉自己:孝心,无需承诺,因为这是做人最根本的责任。有的人,封面与内容同样高雅;有的人,封面与内容同等粗俗。

    2022年10月13日
    12800
  • 如何为游戏起名字?

    所谓的游戏起名字,其实是为游戏用户取名,不同的IP需要用不同的名字来辨别。而为游戏用户取名的方法可分为多种,这里的多种主要由游戏名字的风格来决定。不同风格的游戏名字其取名的方式,所用的字词都是不同的。而今日我们就来说说游戏名字的起名方法,以及在取名的过程中需要注意哪些事项。游戏名字起名方法

    2022年10月20日
    16800
  • 王者名字女生简单干净

    王者荣耀中的名字,往往能够展现出男生们,对于女生们,他们的独特魅力。那么在王者荣耀中,我们可以为女生起一个简单干净的名字,这样会更加突出女生们的个性。那么下面就为大家推荐几个简单干净,又带有男生特色的王者称号吧!这个名字很简单,就是给女生起的名字的一个含义,可以体现出女生们的清新与灵动。而且这个名字最大目的就是让玩家们了解女生们,是一个非常有气质的名字。

    2022年10月20日
    14900
  • qq说说爱情|qq爱情说说大全

    qq爱情说说大全最好的爱情观就是深情而不纠缠。6、后来,我遇见喜欢的人,也没有那么剧烈在一起的冲动了,因为我开始懂得了陪伴是最长情的表白,大概是因为喜欢,所以用什么身份在身边也情愿。到最后,你爱的人终究会败给对你好的人83、那时的我们在一起,永远有着说不完的话题,也不知道是哪里出了错灯突然灭了,喜欢你旳这些日子就像一本病历,祝我们再遇见,都能比现在过得更好。

    2022年10月2日
    21600
  • 每天坚持做一件小事 “打卡”生活充实有成就感

    每天跑步、每天看书、每天英语学习“打卡”……生活中,每天坚持做一件小事会给一个人带来很多好的改变。5%的受访者在每天坚持做一件小事,早起(36.黄玉杰认为,每天坚持做一件小事,能够使自己不断成长,不断进步。”张一涵认为,每天坚持一件小事会觉得每天都有盼头、有希望,而且内心很充实,很有成就感。“一开始会非常有热情、有动力,时间长了就会懈怠,特别是其他的事情一多,就更加坚持不下来了”。

    2022年11月12日
    18900

发表回复

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