ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

关于python中对象可变性的理解

2022-05-23 07:00:56  阅读:189  来源: 互联网

标签:容器 包含 改变 python 元组 对象 理解 编号 可变性


在python中,每个对象都有各自的编号、类型和值。一个对象被创建后,在此对象的生命周期中编号保证是唯一且恒定的。你可以将其理解为该对象在内存中的地址。 'is' 运算符可以比较两个对象的编号是否相同;id() 函数能返回一个代表其编号的整型数。

下面变量a和变量b指向的对象以及对象[1]在内存中的地址都是不同的。尽管值相同,但它们是三个不同的对象。

下面的变量a指向的对象虽然值发生了改变,但在内存中的地址并没有变化,还是同一个对象。

 

在python中有些对象的值是可以改变的。值可以改变的对象被称为可变对象,如列表和字典;值不可以改变的对象就被称为不可变对象,如数字、字符串和元组。有些对象包含对其他对象的引用,它们被称为容器,如元组、列表和字典等。一个不可变容器对象,如果包含对可变对象的引用,如a=[1,2],元组b=(a,'aa',1),当a的值改变时,如a.append('3'),则元组b的值也会改变,但是该容器(元组b)仍属于不可变对象,因为它所包含的对象集是不会改变的。因此,不可变并不严格等同于值不能改变,上面容器的值指的是所包含对象的具体值而不是所包含对象的编号(内存地址),所以容器的值改变了。但是,当我们谈论一个容器的可变性时,我觉得仅指其直接包含的对象的编号个数是否可变。上面容器(元组b)包含的对象的编号有两个(编号本身是不会变的),不会新增或者减少编号,所以它是不可变的类型。

 

 

 

标签:容器,包含,改变,python,元组,对象,理解,编号,可变性
来源: https://www.cnblogs.com/wangyi0419/p/16299870.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有