既然说元组数据类型是不可变的,但是当指定元组中的列表数据怎么又是可变的呢?
- Python中一些皆对象,会为元组中的每一个数据分配内存地址空间
- 当指定元组中的列表数据时,本质是另外一段内存空间对应的是列表数据,完全独立于元组,所以是可变的。
怎么验证?
1,查看现象:
>>> a = (1,2,3,[1,2,3])
>>> a[3]
[1, 2, 3]
>>> a[3][0]
1
>>> a[3][0] = 5
>>> a
(1, 2, 3, [5, 2, 3])
2,查看元组a的内存地址空间:
>>> id(a)
2608417672464
3, 查看元组a[3]的内存地址空间
>>> id(a[3])
2608385422400
扩展:type(a[0]) 是整型数据,不可变,如果是可变类型,也是可以改变的!
>>> type(a[0])
<class 'int'>