python中的不可变类型和可变类型

在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

也就是说,可变类型,即使改变了变量的内容,变量的地址也不会发生变化。

和不可变类型比较,可变类型的多次操作对应的仍然是这个变量,而不可变对象的多次操作,就会生成多个不可变对象。

 

posted @ 2017-09-21 21:56  niudong  阅读(538)  评论(0)    收藏  举报