python 高级_ 深拷贝,浅拷贝

    深拷贝和浅拷贝

基本概念
⁃   Python中一切皆对象
⁃   对象可分为不可变对象和可变对象两种
⁃   变量在内存中开辟的地址称为引用



    引用赋值
⁃   对象间的赋值操作是对地址的引用操作
⁃   在不可变对象赋值时,不可变对象不会被修改,而是会新开辟一个空间
⁃   在可变对象中赋值时,只是将可变对象中保存的引用进行更改



    拷贝
⁃   使用 copy 模块完成拷贝
⁃   copy模块可以实现浅拷贝和深拷贝两种拷贝


浅拷贝
⁃   使用 copy 模块中的 copy 方法
⁃   对于不可变对象,浅拷贝和赋值没有区别
⁃   对于可变对象,只复制当前对象的第一层引用。
⁃   如果可变对象中的对象发生变化 ,拷贝对象也随之变化 


深拷贝
⁃   使用 copy 模块中的  deepcopy 方法
⁃   对于不可变对象,深拷贝和赋值没有区别
⁃   对于可变对象,深拷贝会逐层拷贝所有的数据的引用
⁃   修改可变对象中的对象数据时,拷贝对象不会随之变化


默认拷贝方式
⁃   程序中默认使用浅拷贝


浅拷贝的几种实现形式
⁃   copy 模块的 copy 方法
⁃   对象本身的 copy 方法
⁃   工厂方法
⁃   切片


浅拷贝的优势
⁃   拷贝时间短
⁃   占用空间少
⁃   拷贝效率高

举例:   不可变 :  


(1)


            a = 1 

            b= aa               # (  a 是不可变的 ---------->开辟新的空间)

            b                 # ----->不变 





(2)

可变的变量:              a =  lost[1,2,3]

                        b = aa       (a 是可变的 ------->引用同一个的地址 不变)

         b          (是------> 不变) 





不可变对象拷贝 和 赋值一样
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值