当前位置:首页 > Python教程 > python技巧

python——可变类型与不可变类型

可变类型与不可变类型对象

  1. 概念
    对象在内存中存储了三个数据:
  • id(标识),就是内存地址,相当于C的指针
  • type(类型),数据类型
  • value(对象值),对象存储的内容
    例如说,一个整型对象——1,或者说一个字符对象‘a’,它们都具有上述三个数据存储在内存中。
    顾名思义,可变类型就是允许改变对象的值(内容),不可变类型即相反。
    而可变类型对象与不可变类型对象的具体区别在于对象本身是否可变,这涉及到对象的地址问题。
  1. 分类
    可变类型:List、Dictionary、Set
    不可变类型对象:int、float、bool、String、tuple(限于无数组的元组)
  2. 举例
    可变类型举例:
        a=[1,2,3]
print(f‘初始的列表:{a}‘)
a[2]=4
print(f‘修改的列表:{a}‘)

    

输出结果:
技术分享图片

不可变类型举例:

        a=(1,2,3)
a[1]=4

    
          其元组内容对象组成:

    

技术分享图片
输出结果:
技术分享图片
该错误的解释涉及到地址问题。

  1. 地址问题
    可变类型和不可变类型的对象,是对象的地址绑定数值是否可修改的问题,对于可变类型的对象,它的值(value)改变而标识(id)不会改变,而不可变类型对象一旦被创建,将不再可以改变ID对应的值。
    ① 针对整数型对象 2,3,4
        a=2
print(f‘   整数型对象2的id值为{id(2)}‘)
print(f‘整型类型变量a初始id值:{id(a)}‘)
b=3
print(f‘   整数型对象3的id值为{id(3)}‘)
print(f‘整型类型变量b初始id值:{id(b)}‘)
a=4
print(f‘   整数型对象4的id值为{id(4)}‘)
print(f‘整型类型变量a修改id值:{id(a)}‘)
b=a
print(f‘整型类型变量b修改id值:{id(a)}‘)

    

其结果显示为:
技术分享图片

这里的整数型对象 2,3,4 始终没有变化ID值,而变量a,b实际上,在改变值的同时,已经涉及到另一个对象的ID、VALUE等数据内存空间,当使用元组等不可改变对象的数据类型时,便出现了上述举例中的错误。

原文:https://www.cnblogs.com/xixifuli/p/14743269.html


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐