快速弄懂python中的赋值 、浅拷贝和深拷贝

话不多说直接开始...

上图将a赋值给b ,其中可以看出来b和a的值和地址一样,

当修改数据,源数据a也会改变,为了保存源数据,所以python就有了浅拷贝深拷贝

在拷贝之前,要引入了copy模块

以下浅拷贝和深拷贝可以看成外层 内层

浅拷贝:

b浅拷贝a          ---  b = copy.copy(a)

浅拷贝的地址指向:

1.a如果是可变类型,e.g. 列表、字典 、集合       则a,b指向不同的地址

2.a如果是不可变类型,e.g. 元组、字符串、数字  则a指向b的地址

a中外层拷贝,修改外层元素,b中的外层不会变化 ,上面2不能修改外层元素

a中内层不拷贝,修改内层元素,b中的内层做同样的变化

深拷贝:

b深拷贝a        ---  b = copy.deepcopy(a)

深拷贝地址指向:

1.a如果是可变类型,e.g. 列表、字典 、集合       则a,b指向不同的地址

2.a如果是不可变类型,e.g. 元组、字符串、数字 :

  • a中元素是可变类型  则a,b指向不同的地址
  • a中元素是不可类型  则a,b指向同一个地址

上面2中第二点不能修改元素,1和2中的第一点在a和b中任意一个修改元素值都不会影响另一个

总结:赋值在修改内外层都会改变源数据的值,浅拷贝在修改外层元素时同时不会更改源数据外层的值,内层修改元素则可以更改源数据内层的值,深拷贝在修改元素时不会更改源数据的值

希望能给你带来帮助,喜欢的点个赞哦!

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值