Python中的可变和不可变类型

python中int、str和tuple都是不可变类型,list和dict是可变类型

不可变类型的

思考如下问题:

1
2
3
4
a = 1
b = a
b = 2
a = ?

答案是 1
int 为不可变类型,虽然b=a将b指向了1的内存,但是b=2又分配了一块内存,所以a的指向并没有变,所以a为1.可以通过id()方法看查一下内存地址。

同理tuple也是一样。

可变类型

对于可变类型,思考如下问题:

1
2
3
4
a = [1,2,3]
b = a
b.append(4)
a = ?

因为数组是可变的,b.append(4)将4添加到数组中,所以a的值为[1,2,3,4]

1
2
3
4
a = [1,2,3]
b = a
b = [1,2,3,4]
a = ?

这里同不可变类型原理一样,重新分配了内存,故a=[1,2,3]