Python命名空间和作用域(python中的命名)
off999 2024-11-01 12:49 35 浏览 0 评论
命名空间 (Namespace)
命名空间是一个从名字到对象的映射。简单来说,命名空间是存储变量名字和其对应值的地方。在 Python 中,不同的命名空间可以包含多个相同名字的变量,但它们会指向不同的对象。
Python 中的几种命名空间包括:
- 局部命名空间:在函数内部定义的变量存在于局部命名空间。
- 全局命名空间:在模块层级定义的变量存在于全局命名空间。
- 内置命名空间:Python 的内置名称(如函数名print、id等)存在于内置命名空间。
命名空间是动态创建的,且有生命周期,它们在需要时被创建,结束时被销毁。
作用域 (Scope)
作用域是一个编程区域,这个区域中的命名空间可以被直接访问。在一个程序中,作用域决定了在哪些区域你可以直接访问某个标识符的命名空间。
Python 中有四种作用域:
- L (Local)局部作用域:特指函数内部。
- E (Enclosing)闭包函数外的函数中:涉及嵌套函数时,内层函数可以访问外层函数的命名空间。
- G (Global)全局作用域:模块层级的命名空间。
- B (Built-in)内置作用域:包含 Python 的内置函数和变量。
Python 在查找一个变量时会按照 LEGB 规则进行,即先从局部作用域开始,逐级向外查找直至内置作用域。
区别
- 概念上的区别:命名空间是存储名字的地方,是一个从名字到对象的映射。作用域定义了命名空间中名字的可见性。
- 功能上的区别:命名空间负责名字和对象之间的映射关系,而作用域负责管理这些映射的可见性。
- 关联性:作用域决定了你可以访问哪些命名空间,它们是相互关联的。
实例属性和类属性存储在不同的命名空间中是如何实现的
Python 的类属性和实例属性存储在不同的命名空间中,这是通过对象的属性字典(__dict__)来实现的。类的每个实例有自己的 __dict__ 用于存储实例属性,而类本身也有一个 __dict__ 用于存储类属性。当访问一个对象的属性时,Python 的查找机制是这样的:
- 首先查找实例属性:当通过实例访问一个属性时(如 instance.attribute),Python 首先尝试在实例的 __dict__ 中查找该属性。
- 如果在实例中找不到,接着查找类属性:如果在实例的 __dict__ 中找不到该属性,Python 将在该实例的类的 __dict__ 中查找。
- 如果类中也找不到,继续在基类中查找:如果在类的 __dict__ 中仍未找到,Python 将继续沿着继承链向上查找。
这个过程并不涉及将类属性复制到每个实例中,而是一个动态的查找过程。
class MyClass:
attribute = "This is a class attribute" # 定义类属性
def __init__(self, attribute):
self.attribute = attribute # 定义实例属性
# 创建一个实例,并给实例属性赋值
instance = MyClass("This is an instance attribute")
# 尝试访问实例属性和类属性
print(instance.attribute) # 访问的是实例属性
print(MyClass.attribute) # 访问的是类属性
相关推荐
- 免费照片处理软件app(免费照片处理软件哪个最好)
-
首先打开Photoshop,导入一张照片点击打开打开照片之后,同时按ctrl+j复制一个图层在菜单栏里面选择“滤镜”——“锐化”——“智能锐化”适当将锐化的半径调高一些,勾选“更加精确”锐化后放大图片...
- 免费的ps电脑软件(免费的ps电脑软件有哪些)
-
.任何一个版本都不是免费的,但基本所有版本都有破解版或者绿色版,可以去360软件管家里面下载或者电脑管家里也有,最新版的是PSCC版。photoshop是adobe公司旗下的产品,正确来说,购买正...
- 照片恢复(照片恢复免费版下载)
-
方法/步骤 1.首先下载一个数据恢复软件。 2.安装到电脑上,然后把手机和电脑连接起来。 3.接着我们用下载好的数据恢复软件扫描手机。 4.然后找出要恢复的文件照片。 5.在电脑上选在一个磁...
- tiktok官方网站入口(tiktok官方网站入口免费)
-
入口就是TikTok商店卖家。具体步骤如下:为了加入TikTok商店,您首先需要一个TikTok帐户。一旦您拥有TikTok帐户并且超过了符合条件的年龄,就可以使用它注册为TikTok商店卖家。卖家...
- adobe flash player播放器(adobe flash player viewer)
-
不同操作系统不同浏览器,开启Adobeflashplayer的方法各有不同。开启的前提当然是正确安装喽,不同操作系统不同浏览器安装Adobeflashplayer方法也是各不相同的。Wind...
- 央视cctv5体育直播(央视cctv5体育直播在线观看免费)
-
现在全国每家都有机顶盒,在机顶盒上就可以看CCTV所有频道。也可以用手机浏览器搜索CCTV5体育频道。还有就是可以手机上下载安装央视影音APP,央视频APP都可以看。中央电视台体育频道(频道呼号:CC...
-
- 直播平台app下载大全(直播平台app下载大全免费)
-
专门观看淘宝直播的APP是点淘,这款APP是这段时间才出的,我下载了一个,但是我下载这款APP不是为了买东西当时也是看广告连接才点进去的,它这上面是可以赚一些零花钱,我下载之后他给了我七块钱,然后现在每天弄不弄也能弄个一块钱左右。但是里边的...
-
2026-01-19 01:15 off999
- 网络播放器app(网络播放器怎么连接电视机)
-
牛片APP一站式影视智能功能,几乎可以满足影视人工作中的所有需求。包含的功能有:文字转语音、真人配音、自动加字幕、一键去水印、提词器、拍片估价、堪景神器、影视课程、发布影视相关需求、接单赚钱....等...
- audition(audition属于什么软件)
-
Audition是一款由Adobe开发的音频编辑和混音软件,具有以下主要功能:1.音频录制和编辑:可以录制不同类型的音频,包括对话、音乐、戏剧和环境声音等,还可以使用多种音频效果处理工具对录制...
- office2020官方下载免费完整版
-
Microsoft365和Office2020的区别有以下几点:功能不同。Office2020包含Word、Excel、PowerPoint等组件,功能比较全面;而Microsoft365包...
- 微信管理软件(微信管理)
-
微信管理,可以一键将消息发送到多个群,不限制群数量和次数选择好群组发送消息即可。“里德助手”多消息群发,可以设置多条消息发送,包括图文、小程序,公众号,文章等都是可以的。亲密群发,逢年过节,总是要给...
-
- 优酷视频下载安装2025最新版本
-
2022爱奇艺腾讯优酷会员,要根据具体的需求来选择。喜欢青春偶像剧类型的可以选择爱奇艺视频;喜欢一些自制综艺和自制剧的优酷视频会员是不错的选择;腾讯视频定位就是主打大IP剧和一些热门综艺的转播,一般卫视播出的都会出现在腾讯视频有这方面需...
-
2026-01-19 00:03 off999
- 火辣辣的小说网(火辣辣的小说网名)
-
《司夜爵姜笙》。内容简介:今天是她的婚礼,可新郎司夜爵没有出现。姜笙站在台上,耳边充斥着满座亲朋的窃窃私语。想哭吗?想。可她要真哭出来,场面就更难看了。姜笙固执的站在那儿看着教堂大门。可看着天色从亮到...
欢迎 你 发表评论:
- 一周热门
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
