python的可变与不可变数据类型学习介绍_光环大数据Python培训

上传人:gua****an 文档编号:49769812 上传时间:2018-08-02 格式:DOCX 页数:6 大小:40.12KB
返回 下载 相关 举报
python的可变与不可变数据类型学习介绍_光环大数据Python培训_第1页
第1页 / 共6页
python的可变与不可变数据类型学习介绍_光环大数据Python培训_第2页
第2页 / 共6页
python的可变与不可变数据类型学习介绍_光环大数据Python培训_第3页
第3页 / 共6页
python的可变与不可变数据类型学习介绍_光环大数据Python培训_第4页
第4页 / 共6页
python的可变与不可变数据类型学习介绍_光环大数据Python培训_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《python的可变与不可变数据类型学习介绍_光环大数据Python培训》由会员分享,可在线阅读,更多相关《python的可变与不可变数据类型学习介绍_光环大数据Python培训(6页珍藏版)》请在金锄头文库上搜索。

1、 光环大数据光环大数据-大数据培训知名品牌大数据培训知名品牌http:/ 光环大数据光环大数据 http:/pythonpython 的可变与不可变数据类型学习介绍的可变与不可变数据类型学习介绍_ _光环大数据光环大数据 PythonPython 培训培训python 的可变与不可变数据类型学习介绍。python 与 C/C+不一样,它的变量使用有自己的特点,当初学 python 的时候,一定要记住“一切皆为对象,一切皆为对象的引用”这句话,其实这个特点类似于 JAVA,所以在 python 里面大家也不用担心类似于 C/C+中的指针的复杂问题,在 python 中数据分为可变数据类型,不可变

2、数据类型。可变数据类型:列表 list 和字典 dict。不可变数据类型:整型 int、浮点型 float、字符串型 string 和元组tuple。以 int 和 list 为例,分析“可变数据类型”和“不可变数据类型”之间的区别。不可变数据类型分析x=1id(x)31106520y=1光环大数据光环大数据-大数据培训知名品牌大数据培训知名品牌http:/ 光环大数据光环大数据 http:/id(y)31106520x=2id(x)31106508y=2id(y)31106508z=yid(z)31106508x+=2id(x)31106484光环大数据光环大数据-大数据培训知名品牌大数据培

3、训知名品牌http:/ 光环大数据光环大数据 http:/上面这段程序都是对不可变数据类型中的 int 类型的操作,id()查看的是当前变量的地址值。我们先来看 x=1 和 y=1 两个操作的结果,从上面的输出可以看到 x 和 y 在此时的地址值是一样的,也就是说 x 和 y 其实是引用了同一个对象,即 1,也就是说内存中对于 1 只占用了一个地址,而不管有多少个引用指向了它,都只有一个地址值,只是有一个引用计数会记录指向这个地址的引用到底有几个而已。当我们进行 x=2 赋值时,发现 x 的地址值变了,虽然还是x 这个引用,但是其地址值却变化了,后面的 y=2 以及 z=y,使得 x、y 和

4、z 都引用了同一个对象,即 2,所以地址值都是一样的。当 x 和 y 都被赋值 2 后,1这个对象已经没有引用指向它了,所以 1 这个对象占用的内存,即 31106520 地址要被“垃圾回收” ,即 1 这个对象在内存中已经不存在了。最后,x 进行了加2 的操作,所以创建了新的对象 4,x 引用了这个新的对象,而不再引用 2 这个对象。之所以称为不可变数据类型,这里的不可变可以理解为 x 引用的地址处的值是不能被改变的,也就是 31106520 地址处的值在没被垃圾回收之前一直都是1,不能改变,如果要把 x 赋值为 2,那么只能将 x 引用的地址从 31106520 变为 31106508,相

5、当于 x=2 这个赋值又创建了一个对象,即 2 这个对象,然后x、y、z 都引用了这个对象,所以 int 这个数据类型是不可变的,如果想对 int类型的变量再次赋值,在内存中相当于又创建了一个新的对象,而不再是之前的对象。从上面的过程可以看出,不可变数据类型的优点就是内存中不管有多少个引用,相同的对象只占用了一块内存,但是它的缺点就是当需要对变量进行运算从而改变变量引用的对象的值时,由于是不可变的数据类型,所以必须创建新的对象,这样就会使得一次次的改变创建了一个个新的对象,不过不再使用的内存会被垃圾回收器回收。可变数据类型分析光环大数据光环大数据-大数据培训知名品牌大数据培训知名品牌http:

6、/ 光环大数据光环大数据 http:/a=1,2,3id(a)41568816a=1,2,3id(a)41575088a.append(4)id(a)41575088a+=2id(a)41575088a1,2,3,4,2光环大数据光环大数据-大数据培训知名品牌大数据培训知名品牌http:/ 光环大数据光环大数据 http:/从上面的程序中可以看出,进行两次 a=1,2,3操作,两次 a 引用的地址值是不同的,也就是说其实创建了两个不同的对象,这一点明显不同于不可变数据类型,所以对于可变数据类型来说,具有同样值的对象是不同的对象,即在内存中保存了多个同样值的对象,地址值不同。接着来看后面的操作,

7、我们对列表进行添加操作,分别 a.append(4)和 a+=2,发现这两个操作使得 a 引用的对象值变成了上面的最终结果,但是 a 引用的地址依旧是 41575088,也就是说对 a 进行的操作不会改变 a 引用的地址值,只是在地址后面又扩充了新的地址,改变了地址里面存放的值,所以可变数据类型的意思就是说对一个变量进行操作时,其值是可变的,值的变化并不会引起新建对象,即地址是不会变的,只是地址中的内容变化了或者地址得到了扩充。从上述过程可以看到,可变数据类型是允许同一对象的内容,即值可以变化,但是地址是不会变化的。但是需要注意一点,对可变数据类型的操作不能是直接进行新的赋值操作,比如说 a=

8、1,2,3,4,5,6,7,这样的操作就不是改变值了,而是新建了一个新的对象,这里的可变只是对于类似于 append、+=等这种操作。总结用一句话来概括上述过程就是:“python 中的不可变数据类型,不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象,而对于相同的值的对象,在内存中则只有一个对象,内部会有一个引用计数来记录有多少个变量引用这个对象;可变数据类型,允许变量的值发生变化,即如果对变量进行 append、+=等这种操作后,只是改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化,不过对于相同的值的不同对象,在内存中则会存在不同的对象,即每个对象都有自己

9、的地址,相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的对象。 ”光环大数据光环大数据-大数据培训知名品牌大数据培训知名品牌http:/ 光环大数据光环大数据 http:/为什么大家选择为什么大家选择光环大数据光环大数据!大数据培训、人工智能培训、Python 培训、大数据培训机构、大数据培训班、数据分析培训、大数据可视化培训,就选光环大数据!光环大数据,聘请专业的大数据领域知名讲师,确保教学的整体质量与教学水准。讲师团及时掌握时代潮流技术,将前沿技能融入教学中,确保学生所学知识顺应时代所需。通过深入浅出、通俗易懂的教学方式,指导学生更快的掌握技能知识,成就上万个高薪就业学子。【报名方式、详情咨询报名方式、详情咨询】光环大数据官方网站报名:光环大数据官方网站报名:http:/ /mobile/mobile/

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 数据挖掘与识别

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号