Python 如何理解可更改元组中的可变序列

在 Python 中,元组是不可变序列,那为什么当元组中的元素是可变序列时(如 list、dict)可进行增删的操作?

在定义一个元组时,Python内部会为元组中的每一个元素分配一个内存地址,当我们更改这个列表时,
只是更改了这个列表中的内容,但是这个元组的元素所指向的内存地址是没有被更改的,也就没有违背不可变序列的要求
所以是可以进行增删操作的。示例代码如下

In [35]: tup = ([1,2],2)

In [36]: [id(i) for i in tup]
Out[36]: [2056970648264, 1724785392]

In [37]: tup[0].append(1)

In [38]: tup[0]
Out[38]: [1, 2, 1]

In [39]: [id(i) for i in tup]
Out[39]: [2056970648264, 1724785392]

 

posted @ 2019-04-07 22:22  ilovetesting  阅读(636)  评论(0编辑  收藏  举报