Python中可变类型VS不可变类型

一、对象类型

        Python中一切皆对象,对象为在内存空间中的一块存储空间,空间内包括:内存地址(id)、类型(type)、值(value),当给变量进行赋值时,先在空间内创建一块区域(一个对象),然后把对象的id赋值给变量,变量重新赋值时,在内存空间重新开辟一块空间,变量重新指向该空间的id。原对象(空间)被系统垃圾回收。

        变量无类型,值才有数据类型,变量中永远保存的是值(对象)的id(地址),因此变量永远占用一个4字节的空间,这就是为什么int类型无大小限制,当x=9999999999时,先在内存中开辟一个空间保存99999999999对象,然后把这块空间的id存储到变量x之中,因此python中的int类型可以时无限大的数字。

        为了节省内存空间,数值在256之内的数字,会开辟同一个内存空间,也就是说a=2,b=2,那么a和b指向同一个内存空间。当a=200000,b=200000时,a和b指向不同的内存空间。A=b=值 时代表a和b指向同一个地址空间,当重新给b赋值时,b指向了另一个值的地址空间,不会对a的值造成影响。

二、不可变数据类型

Int、float、complex、tuple、str

二、可变数据类型

List、dict、set

猜你喜欢

转载自www.cnblogs.com/henji1266/p/11994712.html
今日推荐