在python中整形,字符串,元组是不可变类型,而列表和字典都是可变类型。
对于不可变类型进行重新赋值,相当于是用以前的变量名重新指向了新的地址,这个地址中存的变量值就是重新的赋值
通过python中提供的函数id可以看到变量在内存中存储的位置
>>> a = 10 >>> id(a) 25407616 >>> a = 6 >>> id(a) 25407712
同时,对于0-256之间的任意整形,以及稍微短一点的字符串来讲,相同的值,在python中内存位置是相同的。
>>> a =256 >>> b = 256 >>> id(a) 25413664 >>> id(b) 25413664 >>> a =257 >>> b = 257 >>> id(a) 25833048 >>> id(b) 25832952
对于可变类型,以列表为例进行描述
>>> a = [1,2,3] >>> id(a) 140640457811584 >>> a.append(5) >>> id(a) 140640457811584
也就是说,可变类型,即使改变了变量的内容,变量的地址也不会发生变化。
和不可变类型比较,可变类型的多次操作对应的仍然是这个变量,而不可变对象的多次操作,就会生成多个不可变对象。