python的可变与不可变数据类型

Posted yujiashuo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python的可变与不可变数据类型相关的知识,希望对你有一定的参考价值。

      背景:

    探寻python的数据类型是否可变,也可以更好的理解python对内存的使用情况。

      

      可变与不可变定义

        可变数据类型:在python中定义一个变量,当变量值被修改后,内存地址未变更(对象未变更),则将该数据定义为可变数据类型。

             可不变数据类型:当变量数值被修改后,变量的内存地址发生变更(创建了新对象),则认为是不可变数据类型。

 

  针对python数据类型进行测试:

  数字:

>>> a = 111
>>> id(a)
1549733776
>>> a = 222
>>> id(a)
1549737328

  结论:数字类型的变量值变更后内存地址发生改变  

 

  字符串:

>>> a = "abcdefg"
>>> id(a)
2363386268560
>>> a = "abcdefgggggg"
>>> id(a)
2363386295024

  结论:字符串类型的变量值变更后内存地址发生改变

 

  元组:

>>> a = (‘aa‘,‘bb‘,‘cc‘)
>>> id(a)
2363384788456
>>> a = (‘aa‘,‘bb‘,‘dd‘)
>>> id(a)
2363384789896

  结论:元组类型的变量值改变后内存地址发生变化

 

  列表:

>>> a = [‘aa‘,‘bb‘,‘cc‘]
>>> id(a)
2363386243016
>>> a[0] = 11
>>> a
[11, ‘bb‘, ‘cc‘]
>>> id(a)
2363386243016

  结论:列表类型的变量值发生变化后内存地址未变更

 

  字典

>>> a = {‘name‘:‘zhangsan‘,‘age‘:‘33‘}
>>> id(a)
2363384325384
>>> a[‘name‘] = ‘lisi‘
>>> a
{‘name‘: ‘lisi‘, ‘age‘: ‘33‘}
>>> id(a)
2363384325384

  结论:字典类型的变量值发生变化后内存地址未变更

 

 

  汇总:当变量值为数字,字符串,元组数据类型时,数值发生变化后内存地址变更,以为着创建了一个新对象。因此不可变数据类型为:数字,字符串,元组。

     当变量值为列表,字典数据类型时,数值发生变化后内存地址未变更,以为着变更后依然是在同一个对象,因此可变数据类型为:列表,字典。

   

以上是关于python的可变与不可变数据类型的主要内容,如果未能解决你的问题,请参考以下文章

python的可变与不可变数据类型

Python数据类型的可变与不可变

python可变类型与不可变类型

python的可变类型与不可变类型

python —— 可变与不可变类型

python实例可变数据类型与不可变数据类型