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

余生颓废 提交于 2019-12-06 16:36:56

一、对象类型

        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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!