python 开辟内存空间慢_从内存角度给测试人员介绍Python中的可变和不可变数据类型...

Python中的可变和不可变数据类型的分类依据, 指的是保存数据的源内存空间的数据是否允许修改

1. 不可变数据类型

源内存空间中数据不允许修改, 如果想要修改, 只能开辟新内存空间,让变量引用指向新内存空间数据的地址
包括: int (整数类型) float (浮点数类型) bool (布尔类型) str (字符串类型) tuple(元组类型)

比如: 下面以float 浮点数类型为例

0282128fb3414ad60a28e43cd21e4c9e.png

上述图示中可以清楚的看出, float是不可变数据类型, 其修改数据前后的引用数据的id()地址值发生了变化

再比如: 我们以元组为例, 说明元组也是不可变的数据类型

c6cd54e7c1cd59cbc1d0061646762fdb.png

可以看出, 对元组使用+=操作时,元组的前后数据改变了, 而且引用数据的地址也发生了改变,元组原来内存空间中的数据不允许修改, 所以,元组是不可变数据类型

再比如: 下边以字符串为例, 证明字符串也是不可变数据类型

4710a129bcef3b15f23723da02efb8e3.png

从上面的图示可以很清晰的看出, 修改数据的前后, 字符串引用数据的地址发生了变化, 原内存空间的数据不允许修改, 因此字符串是不可变数据类型.

因此可以得出结论, 不可变数据类型, 变量引用原内存空间中数据不允许修改, 如果想要修改, 只能开辟新内存空间,让变量引用指向新内存空间数据的地址

2. 可变数据类型

概念: 源内存空间中的数据可以修改不需要开辟新内存空间,只要在源内存基础上修改数据
包括: list(列表类型) dict(字典类型) set(集合类型)

比如: 下面以列表为例, 说明列表是可变数据类型

5908f610346f46284f1fac8e1174ec68.png

从上面的图示中可以看出, 对列表进行操作, 添加数据300后, 前后并没有重新开辟内存空间, 而是在原内存基础上添加的数据, 所以 列表是可变数据类型

再比如: 以下是字典的图示, 展示字典也是可变数据类型

7e5f8cfa7d3a5fdb78efb4e8378fe5ec.png

从上面的图示可以看出, 修改字典数据前后, 其中引用数据的地址, 并没有发生改变, 并没有开辟新的内存空间, 而是在原内存基础上修改的数据, 因此字典是可变数据类型

再比如: 下边的集合的使用, 说明集合也是不可变数据类型

ca5f40fde3f6136b12a139a9095bfde5.png

从上面的图示可以查看出, 对集合中添加数据前后, 其集合变量的引用地址并没有发生变化, 因此集合是可变数据类型.

因此从上面的图示得出结论,源内存空间中的数据可以修改,不需要开辟新内存空间,只要在源内存基础上修改数据, 这样的数据类型 就是可变数据类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值