python中的浅拷贝和深拷贝

可变数据类型和不可变数据类型

一、什么是可变数据类型和不可变数据类型

可变数据类型:value值改变,id值不变;
不可变数据类型:value值改变,id值(内存地址)也随之改变。

也就是税:
可变对象是指,一个对象在不改变其所指向的地址的前提下,可以修改其所指向的地址中的值;

不可变对象是指,一个对象所指向的地址上值是不能修改的,如果你修改了这个对象的值,那么它指向的地址就改变了,相当于你把这个对象指向的值复制出来一份,然后做了修改后存到另一个地址上了。

二、如何确定一种数据类型是可变的还是不可变的

根据可变数据类型与不可变数据类型的概念,只需要在改变value值的同时,使用id()函数查看变量id值是否变化就可以知道这种数据类型是可变的还是不可变的了。

三、可变数据类型和不可变数据类型都有什么
不可变数据类型:布尔值、字符串、数值型、元组等
可变数据类型:列表、字典
举例:
在这里插入图片描述
四、不可变数据类型有什么好处
不可变类型有什么好处?如果数据是不可变类型,当我们把数据传给一个不了解的API时,可以确保我们的数据不会被修改。如果我们要操作一个从函数返回的元组,可以通过内建函数list()把它转换成一个列表。(列表和元组的区别之一)

深浅拷贝是什么

浅拷贝是新创建了一个跟原对象一样的类型,但是其内容是对原对象元素的引用。这个拷贝的对象本身是新的,但内容不是。拷贝序列类型对象(列表/元组)时,默认是浅拷贝。

深拷贝,在内存中将所有的数据重新创建一份

深浅拷贝的实现

在这里插入图片描述

深浅拷贝的区别

可变数据的浅拷贝

在这里插入图片描述在这里插入图片描述

不可变数据类型的浅拷贝和深拷贝

浅拷贝:它的内外都相同(内存地址)拷贝实际上是对原始对象的引用
在这里插入图片描述

在这里插入图片描述深拷贝:内外层都不相同
在这里插入图片描述

深拷贝

在这里插入图片描述

总结(赋值、浅拷贝和深拷贝的区别)

在这里插入图片描述在这里插入图片描述补充:

浅拷贝的用处,用来创建联合账号

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值