首页 > 编程语言 > 详细

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

时间:2018-06-09 12:14:51      阅读:166      评论:0      收藏:0      [点我收藏+]

      背景:

    探寻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的可变与不可变数据类型

原文:https://www.cnblogs.com/yujiashuo/p/9158985.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!