python浅拷贝、深拷贝和赋值“=”

a = {1:[1,2,3]}

① 赋值"="操作

b = a: 赋值引用,a 和 b 都指向同一个对象。
在这里插入图片描述

注意:在使用赋值“=”的时候,不可对原变量进行重新的赋值操作,否则原变量会指向一个新的内存地址。例如:

例1:

# 用"="进行赋值操作
a = [1,2,3]
b = a
a = [2,3,4]
print(a)
print(b)
"""
结果:
[2, 3, 4]
[1, 2, 3]
"""

例2:

# 对变量a本身进行修改
a = [1,2,3]
b = a
a.append(99)
print(a)
print(b)
""""
结果:
[1, 2, 3, 99]
[1, 2, 3, 99]
"""

②浅拷贝

b = a.copy(): 浅拷贝, a 和 b 是一个独立的对象,但他们的子对象还是指向统一对象(是引用)。
在这里插入图片描述

copy对于一个复杂对象的子对象并不会完全复制,比如序列里的嵌套序列,字典里的嵌套序列等都是复杂对象的子对象。对于子对象,python会把它当作一个公共镜像存储起来,所有对他的复制都被当成一个引用。

③深拷贝

b = copy.deepcopy(a): 深度拷贝, a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值