• 可变与不可变类型(一)


     

    可变与不可变类型 

     

     

    1、可变与不可变类型 

    1)学python一定要记住“一切皆为对象,一切皆为对象的引用”

    2所谓可变对象是指,对象的内容可变,而不可变对象是指对象内容不可变;

    3可变数据类型:value值改变,id值不变;不可变数据类型:value值改变,id值也随之改变。

    4不可变immutable):int、字符串(string)float、(数值型number)、元组(tuple)

    wps941F.tmp 

    i = 3 (被垃圾回收)

    i = 3 + 1 (实际 i = 4

    从而可知,不可变对象的特征没有变,变的只是创建了新对象,改变了变量的对象引用。

     

    wps9420.tmp 

    所示,因为整数为不可变,x,y,z在内存中均指向一个值为1的内存地址,也就是说,x,y,z均指向的是同一个地址

     

    优点:可以减少重复的值对内存空间的占用。

    缺点:如上图所示,修改这个变量绑定的值,如果内存中没用存在该值的内存块,那么必须重新开辟一块内存,把新地址与变量名绑定。而不是修改变量原来指向的内存块的值,这给执行效率带来一定的降低。

     

    5可变mutable):字典型(dictionary)、列表型(list)

    wps9421.tmp 

    wps9422.tmp 

    2如何确定一种数据类型是可变的还是不可变的

    根据可变数据类型与不可变数据类型的概念,只需要在改变value值的同时,使用id()函数查看变量id值是否变化,就可以知道这种数据类型是可变的还是不可变的了。

    1)数字

    wps9423.tmp 

    数字:从图中可以看出当数字的值改变时,变量id值也改变了,所以数字是不可变数;

      python中为了减少开辟内存造成的时间开销,对于三位内的整型数字类型数据,在开辟一块内存空间后,后面的三位内的整型数据都放到这个内存空间中,所以三位以内的整型数字类型的id值都是相同的。

     

     

    2)字符串

    wps9434.tmp 

     

    从图中可以看出当字符串的值改变时,变量id值也改变了,所以字符串是不可变数据类型

     

    3)布尔

    wps9435.tmp 

    从图中可以看出当布尔的值改变时,变量id值也改变了,所以布尔值是不可变数据类型

     

     

    3)元祖

    因为元祖元素是不可修改的,所以元祖是不可变数据类型

    4)列表

    wps9436.tmp 

     

     从图中可以看出,当列表中的某个元素改变时,列表的id值没有改变,所以列表是可变数据类型

     

    5)字典

    wps9437.tmp 

     

     从图中可以看出,当字典的键值对的value部分改变时,字典的id值没有改变,所以字典是可变数据类型

     

     

     

     

    欢迎关注小婷儿的博客:

    csdnhttps://blog.csdn.net/u010986753

    博客园:http://www.cnblogs.com/xxtalhr/

     

    有问题请在博客下留言或加QQ群:483766429 或联系作者本人 QQ 87605025

     

    OCP培训说明连接:https://mp.weixin.qq.com/s/2cymJ4xiBPtTaHu16HkiuA

    OCM培训说明连接:https://mp.weixin.qq.com/s/7-R6Cz8RcJKduVv6YlAxJA

     

    小婷儿的python正在成长中,其中还有很多不足之处,随着学习和工作的深入,会对以往的博客内容逐步改进和完善哒。

    小婷儿的python正在成长中,其中还有很多不足之处,随着学习和工作的深入,会对以往的博客内容逐步改进和完善哒。

    小婷儿的python正在成长中,其中还有很多不足之处,随着学习和工作的深入,会对以往的博客内容逐步改进和完善哒。

    重要的事说三遍。。。。。。

     

     

    wpsF812.tmpwpsF813.tmp 

     

  • 相关阅读:
    JS数据类型、JS数据类型转换、JS运算
    JS 变量
    js初识 何为JavaScript
    ES6 字符串的用法
    ES6 初识 let、const、ES6兼容、解构赋值
    Bootstrap 小结
    列一下我所认为的,你面试微软前必须要读的十本书[转]
    MFC中换行实现
    MFC中输入框的文本转换为char[]字符数组类型
    MFC下OpenGL入门(可以用)
  • 原文地址:https://www.cnblogs.com/pythonbao/p/9049188.html
Copyright © 2020-2023  润新知