码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-06-09 13:19:33      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:highlight   har   数值   变量   def   code   因此   div   列表   

      背景:

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

标签:highlight   har   数值   变量   def   code   因此   div   列表   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!