直接赋值,浅拷贝,深拷贝的使用和区别

一.直接赋值

1.就是直接对象的应用(别名)
例子: 可以看到对b的赋值了a的值,但是修改b的值,a的值也会发生变化因为赋 值其实就说应用对象的内存地址,并不是重新开辟新的内存空间进行储存,所以a的值也会发生变化

# 直接赋值
a={1:[1,2,3]}
b=a
a['让我看看']='杰哥不要呀'
print(a)
print(b)
#结果:
{1: [1, 2, 3], '让我看看': '杰哥不要呀'}
{1: [1, 2, 3], '让我看看': '杰哥不要呀'}

二.浅拷贝

1.浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象
例子:使用a.copy()赋值,叫做浅拷贝,对a的键值和操作不会同步,但是a的子对象,就是a[0]的值它还是引用同一个内存地址

#浅拷贝
a={1:[1,2,3]}
b=a.copy()
b['让我看看']='杰哥不要呀'
print(a)
print(b)
print("杰哥杰哥杰哥杰哥杰哥杰哥杰哥杰哥杰哥")
a[1].append("呜呜呜")
print(a)
print(b)
# 结果:
{1: [1, 2, 3]}
{1: [1, 2, 3], '让我看看': '杰哥不要呀'}
杰哥杰哥杰哥杰哥杰哥杰哥杰哥杰哥杰哥
{1: [1, 2, 3, '呜呜呜']}
{1: [1, 2, 3, '呜呜呜'], '让我看看': '杰哥不要呀'}

三.深拷贝

1.深拷贝(deepcopy):copy 模块的deepcopy 方法,完全拷贝了父对象及子对象

#深拷贝
import copy
a={1:[1,2,3]}
b=copy.deepcopy(a)
b["让我看看"]='杰哥不要呀'
a[1].append(2)
print(a)
print(b)
#结果:
{1: [1, 2, 3, 2]}
{1: [1, 2, 3], '让我看看': '杰哥不要呀'}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值