背景:
探寻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
结论:字典类型的变量值发生变化后内存地址未变更
汇总:当变量值为数字,字符串,元组数据类型时,数值发生变化后内存地址变更,以为着创建了一个新对象。因此不可变数据类型为:数字,字符串,元组。
当变量值为列表,字典数据类型时,数值发生变化后内存地址未变更,以为着变更后依然是在同一个对象,因此可变数据类型为:列表,字典。
原文地址:https://www.cnblogs.com/yujiashuo/p/9158985.html
时间: 2024-11-07 07:17:22