精华内容
下载资源
问答
  • python中不可变数据类型可变数据类型

    万次阅读 多人点赞 2019-05-29 17:43:15
    可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型可变数据类型 :当该数据类型的对应变量的值发生了改变,那么它对应的内存...

    名词解释

    不可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型。
    可变数据类型 :当该数据类型的对应变量的值发生了改变,那么它对应的内存地址不发生改变,对于这种数据类型,就称可变数据类型。

    标准数据类型

    Python3 中有六个标准的数据类型:
    Number(数字)
    String(字符串)
    List(列表)
    Tuple(元组)
    Set(集合)
    Dictionary(字典)

    Python3 的六个标准数据类型中:
    不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
    可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。

    展开全文
  • python可变数据类型和不可变数据类型

    千次阅读 多人点赞 2019-01-06 23:44:46
    Python3可变数据类型与不可变数据类型 有很多人在刚开始接触 python 这个语言的时候,总是搞不清楚什么是 可变数据类型 什么是 不可变数据类型,今天就让我们通过这篇小文章来详细了解一下。 知识点目录: 1....

                              Python3可变数据类型与不可变数据类型

    有很多人在刚开始接触 python 这个语言的时候,总是搞不清楚什么是 可变数据类型 什么是 不可变数据类型,今天就让我们通过这篇小文章来详细了解一下。


    知识点目录:

    1.python 的数据类型

    2.可变数据类型 和 不可变数据类型 都有哪些?

    3.专业名词解释

    4.代码举例说明

    5.表格图


    ----------------------------------------------------------这是一条帅气的分割线-----------------------------------------------------------------

    1. python 的数据类型?

    数值类型、字符串、元组、列表、字典、集合(不常用)


    2.可变数据类型 和 不可变数据类型 都有哪些?

    可变数据类型:list(列表)、dict(字典)、set(集合,不常用)

    不可变数据类型:数值类型(int、float、bool)、string(字符串)、tuple(元组)


    3.专业名词解释

    可变数据类型:当该数据类型对应的变量的值发生了变化时,如果它对应的内存地址不发生改变,那么这个数据类型就是 可变数据类型

    不可变数据类型:当该数据类型对应的变量的值发生了变化时,如果它对应的内存地址发生了改变,那么这个数据类型就是 不可变数据类型

    总结:可变数据类型更改值后,内存地址不发生改变。不可变数据类型更改值后,内存地址发生改变。


    4.代码举例说明

    4.1 数值数据类型

    # 数值数据类型
    number = 1
    print(id(number),type(number))
    
    number = 2    # 重新赋值
    print(id(number),type(number))
    
    # 结果
    1738921008 <class 'int'>
    1738921024 <class 'int'>

    总结:数值数据类型,同一个变量,一旦重新赋值,内存地址就会发生改变。


    4.2 字符串数据类型

    # 字符串数据类型
    name = 'Super Man 超人'
    print(id(name),type(name))
    
    name = 'Iron Man 钢铁侠'
    print(id(name),type(name))
    
    # 结果
    56870552 <class 'str'>
    64772320 <class 'str'>

    总结:字符串数据类型,同一个变量,一旦重新赋值,内存地址就会发生改变。


    4.3 元组数据类型

    # 元组数据类型
    tuple_data1 = (1,'Hello')
    print(id(tuple_data1),type(tuple_data1))
    
    tuple_data2 = ([2,3],(5,6))    # 创建新的元组
    
    tuple_data1 = tuple_data1 + tuple_data2    # 两个元组进行连接
    print(id(tuple_data1),type(tuple_data1))    # 打印连接之后的内存地址
    
    print(tuple_data1)    # 打印连接后的数据
    
    
    # 结果
    91584352 <class 'tuple'>
    91143888 <class 'tuple'>
    (1, 'Hello', [2, 3], (5, 6))
    

    总结:判断元组数据类型相对麻烦一些,因为元组数据类型类似于列表数据类型,元组内可以存储 数值类型、字符串、列表、元组,但是元组一经创建,内部的元素的值就不能修改,否则报错。但是我们可以对元组进行连接组合。在例子中可以看到,同一个变量,将两个元组的值进行连接赋值给变量,然后打印变量内存地址发生改变。所以做出判断,元组是不可变数据类型


    4.4 列表数据类型

    # 列表数据类型
    list_data = [1,'q','qwer',True]
    print(id(list_data),type(list_data))
    
    list_data.append('djx')    # 调用 append 添加方法,添加数据
    print(id(list_data),type(list_data))
    
    # 结果
    88407856 <class 'list'>
    88407856 <class 'list'>

    总结:列表数据类型,同一个变量,添加新值之后,内存地址不会发生改变。


    4.5 字典数据类型

    # 字典数据类型
    dict_data = {2: 1, 'key2': 'djx', 'key3': 'li'}
    print(id(dict_data), type(dict_data))
    
    dict_data['key4'] = 'haha'    # 往字典中添加一个键值对
    print(id(dict_data), type(dict_data))
    
    # 结果
    86364208 <class 'dict'>
    86364208 <class 'dict'>

     总结:字典数据类型,同一个变量,添加新值之后,内存地址不会发生改变。


    4.6 集合数据类型

    # 集合数据类型
    set_data = {1, 'd', '34', '1', 1}
    print(id(set_data), type(set_data))
    
    set_data.add('djx')    # 添加元素
    print(id(set_data), type(set_data))
    
    # 结果
    84993488 <class 'set'>
    84993488 <class 'set'>

    总结:集合数据类型,同一个变量,添加新值之后,内存地址不会发生改变。


    5.表格图

    数据类型可变/不可变
    整型不可变
    字符串不可变
    元组不可变
    列表可变
    字典可变
    集合可变

    非常感谢同仁的观看.如果小编写的有问题,欢迎评论.发现问题后会第一时间修改.

    祝大家工作顺利.    ♥(ˆ◡ˆԅ)   

     

     

     

     

    展开全文
  • 可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型可变数据类型 :当该数据类型的对应变量的值发生了改变,那么它对应的内存...
    一、基本概念

    以下所有的内容都是基于内存地址来说的。
    不可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型。
    可变数据类型 :当该数据类型的对应变量的值发生了改变,那么它对应的内存地址不发生改变,对于这种数据类型,就称可变数据类型。
    总结:不可变数据类型更改后地址发生改变,可变数据类型更改地址不发生改变

    二、从Java的String&StringBuilder中看差别

    这里引入Snapshot diagrams,不清楚的可以点击Snapshot diagrams跳转到下面查看。
    String:不可变数据类型
    StringBuilder:可变数据类型

    1. 更改对象的值
      不可变数据类型是在重新将引用指向一个新地址,新地址中为更改后的值。 可变数据类型则在原来的地址上直接更改对象值。

      String s = "a";  s = 'ab';
      StringBuilder sb = "a";   sb = "ab";
      

      string类型更改值  StringBuilder类型更改值

    2. 一个地址被多个对象引用时

      String s = "a";  s = 'ab';
      StringBuilder sb = "a";   sb = "ab";
      
      String t = s;
      t = t + "c";
      StringBuilder tb = sb;
      tb.append("c");
      

      在这里插入图片描述

    3. 其他差别
      不可变数据类型:对其修改会产生大量的临时拷贝(需要垃圾回收)
      可变数据类型:最少化拷贝以提高效率,可以共享数据

    三、可变数据使用风险
    1. 传参传递可变数据类型
      //计算List所有数据绝对值之和
      //风险:更改了list中的值
      public static int sumAbsolute(List<Integer> list) {
          for(int i = 0; i < list.size(); i++) 
            list.set(i,Math.abs(list.get(i)));
          return sum(list);
       }
      
    2. 返回可变数据类型
      //生成聚会时间
      //风险:在更改partyDate时同样会更改answer的值
        private static Date answer = null;
        public static Date startOfString() {
          if(answer == null)
            answer = newDate();
          return answer;
        }
        public static void partyPlanning() {
          Date partyDate =  startOfString();
          partyDate.setMonth(partyDate.getMonth()+1);
        }
      
    四、保障可变数据类型数据的安全

    通过防御式拷贝,给客户端返回一个全新的Date对象,例如上图中第二个例子。

    return new Date(groundhogAnswer.getTime());
    
    五、(补充)Snapshot diagrams

    Snapshot diagrams
    用于描述程序运行时内部状态的快照图。 其作用:
    (1)便于程序员之间的交流
    (2)便于刻画各类变量随时间变化的过程
    (3)便于解释设计思路

    1. 基本数据类型
      在这里插入图片描述
    2. 对象类型
      在这里插入图片描述
    3. 不可变类型的对象
      不可变对象:用双线椭圆
      可变对象:用单线椭圆
      在这里插入图片描述在这里插入图片描述
    4. 不可变的引用
      即带final关键字的引用,用双线箭头
      在这里插入图片描述
    5. 其他
      不可变引用指向可变引用
      final StringBuilder sb = new StringBuilder("abc");
      sb.append("d"); //引用是不可变的,但指向的值却可以是可变的 
      sb = new StringBuilder("e"); //编译阶段出错:The final variable sb cannot be assigned
      System.out.println(sb);
      
      在这里插入图片描述
      6. 查bug1
      在这里插入图片描述在这里插入图片描述
      7. 查bug2
      在这里插入图片描述在这里插入图片描述在这里插入图片描述
    展开全文
  • 一、什么可变数据类型和不可变数据类型  可变数据类型:value值改变,id值不变;不可变数据类型:value值改变,id值也随之改变。   二、如何确定一种数据类型是可变的还是不可变的  根据可变数据类型与不可变...

     

    一、什么可变数据类型和不可变数据类型

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

     

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

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

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

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

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

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

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

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

     

    三、小数池

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

    展开全文
  • Python的可变与不可变数据类型

    万次阅读 多人点赞 2015-11-16 13:13:19
    python的可变与不可变数据类型
  • Python的可变数据类型有列表和字典,不可变数据类型有整型(int),浮点型(float),字符串型(String)和元组型(tuple).不可变数据类型的不可变指的是变量引用的地址处的值是不可变的。例如int类型,改变该类型...
  •  可变数据类型:变量引用的数据类型,在更改数值的时候,存在不开辟新内存的行为,此数据类型为可变数据类型。  不可变数据类型 :变量引用的数据类型,在更改数值的时候,不存在不开辟新内存的行为,此数据类型...
  • 开始学python时不理解可变数据类型和不可变数据类型到底该怎么区分?当时也没时间多想,后来有一次和一个朋友又说到这个问题,所以决定去弄个究竟。谨以此文献给更多的后来者参考。 可变数据类型:当该数据类型对应...
  • 将python3的基本数据类型有六种: Number(int, float, bool, complex),String, ...可变数据类型:list,dic,set 不可变数据类型:Number, String, Tuple 两者区别: >>> a = [1, 2] >>> print...
  • python 可变数据类型&不可变数据类型

    千次阅读 2014-11-27 21:51:51
    在python中,数据类型分为可变数据类型和不可变数据类型,不可变数据类型包括string,int,float,tuple,可变数据类型包括list,dict。 所谓的可变与不可变,举例如下: >>> a = "test" >>> print a[0] t >>> a[0...
  • 可变数据类型: 数值型、字符串型string和元组tuple 不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象,而对于相同的值的对象,在内存中则只有一个对象(一个地址),如下图用id()方法可以...
  • python中的可变与不可变数据类型

    千次阅读 2017-09-05 22:06:45
    python中的可变数据类型包括字典和列表,而不可变数据类型包括字符串、数字和元组。 可变数据类型中,即便对数据进行更改,数据的id也不会发生变化,而不可变数据类型中,只要对数据的值进行更改,则数据的id就发生...
  • Python的基本数据类型大致分为6类:1.Number(数字) 2. String(字符串) 3. Tuple (元组) 4. List(列表) 5. Dictionary (字典) 6. Sets(集合) (bool布尔类型、int整型、float浮点型、complex复数等都归为Number数字...
  • python中可变数据类型与不可变数据类型小结

    千次阅读 多人点赞 2018-12-13 11:52:59
    一、python中数据类型(红色为可变类型) 1、字符串 str 2、布尔类型 bool 3、整数 int  4、浮点数 float 5、数字 (int和float)6、列表 list 7、元组 tuple8、字典 dict 9、日期 date 二、可变类型 ...
  • 初学python的时候,可能会有很多疑惑,尤其是最先接触的所谓的“可变数据类型”和“不可变数据类型”。python与C/C++不一样,它的变量使用有自己的特点,当初学python的时候,一定要记住“一切皆为对象,一切皆为...
  • 可变数据类型也就是说集合中的每一个元素,一旦放到集合中,这个元素就是不能被修改的 集合类型要求元素是独一无二的,不能存在相同的元素,但是如果其中的某一个元素是可以被改变的,它一旦改变之后可能会和其他...
  • 可变数据类型的简单理解

    千次阅读 2015-04-07 21:12:53
    但是,存在一种情况,“会使这种不可变数据类型被改变” Java中新建一个类的对象通常是通过引用来实现的,这种引用会造成.“ 引用不变,但是引用所指向的值发生了改变”这种情况而编译时不会报错,
  • 像list,dict之类的变量就是可变数据类型,变量名存储的是一个地址,该地址指向一个具体的对象,并且不管对变量的值即对象做怎么样的操作,都不会改变变量名存储的地址。下面是一个例子: def fun(labels):  dic = ...
  • 可变类型定义:变量值改变但是变量地址不会改变 (Set(集合)List(列表)Dictionary(字典))       不可变类型定义:变量值改变,变量地址必须改变(Number(数值)String(字符串)...
  • Python 基础之字符串(不可变数据类型) 前期我们暂时用windows下python的IDLE的来理解性的学习编写Python程序 准备知识 变量:大小字母写开头或者下划线 出开头的其他的可以为大小写字母数字或者下划线 type...
  • 学习Python首先我们要知道Python变量保存的是值引用 也可以说:变量是对内存及其地址的抽象 Python:一切变量都是对象 ...变量的每一次初始化,都开辟了一个新的空间,将新内容的地址赋值给...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 993,127
精华内容 397,250
关键字:

可变数据类型