|
|
发表于 2017-7-28 15:30:35
|
显示全部楼层
不可变不是应该是内容改变了但是内存地址不改变吗?
- >>> a=3
- >>> id(a)
- 500586800
- >>> a=5
- >>> id(a)
- 500586832 #改变值后地址也变了---不可变变量
- >>> b=[2,3]
- >>> id(b)
- 53227848
- >>> b[1]=5
- >>> id(b)
- 53227848 #改变值后地址不变---可变变量
复制代码
还是简单类型:比如整型,如果同一个变量a重新赋值了,内容是变了,但是元组中存放的是这个变量名a,那元组的内容不是应该是变量a变化后的值?
元组存放的不是这个变量,而是变量的地址,当变量重新赋值后,地址改变了,但元组中元素仍指向原来的地址,即,元组的内容不是变量a变化后的值。你体会一下下面的代码。
- >>> a=3
- >>> b=(a,4)
- >>> b
- (3, 4)
- >>> a=4
- >>> b
- (3, 4) #b的第0个元素仍然是3
- >>> c=[2]
- >>> b=(c,0)
- >>> b
- ([2], 0)
- >>> c.append(3) #c的地址没变
- >>> b
- ([2, 3], 0) #所以b的第0个元素也跟着改变了。
复制代码 |
|