举例区分Python中的浅复制与深复制

 更新时间:2015年07月02日 12:15:02   作者:DarkBull  
这篇文章主要介绍了举例区分Python中的浅复制与深复制,是Python入门学习中的重要知识,需要的朋友可以参考下

copy模块用于对象的拷贝操作。该模块非常简单,只提供了两个主要的方法: copy.copy 与 copy.deepcopy ,分别表示浅复制与深复制。什么是浅复制,什么是深复制,网上有一卡车一卡车的资料,这里不作详细介绍。复制操作只对复合对象有效。用简单的例子来分别介绍这两个方法。

浅复制只复制对象本身,没有复制该对象所引用的对象。
 

#coding=gbk
import copy
l1 = [1, 2, [3, 4]]
l2 = copy.copy(l1)
print l1
print l2
l2[2][0] = 50
print l1
print l2
#---- 结果 ----
[1, 2, [3, 4]]
[1, 2, [3, 4]]
[1, 2, [50, 4]]
[1, 2, [50, 4]]

同样的代码,使用深复制,结果就不一样:
 

import copy
l1 = [1, 2, [3, 4]]
l2 = copy.deepcopy(l1)
print l1
print l2
l2[2][0] = 50
print l1
print l2
#---- 结果 ----
[1, 2, [3, 4]]
[1, 2, [3, 4]]
[1, 2, [3, 4]]
[1, 2, [50, 4]]

改变copy的默认行为

在定义类的时候,通过定义__copy__和__deepcopy__方法,可以改变copy的默认行为。下面是一个简单的例子:
 

class CopyObj(object):
  def __repr__(self):
    return "CopyObj"
   
  def __copy__(self):
    return "Hello"
obj = CopyObj()
obj1 = copy.copy(obj)
print obj
print obj1
#---- 结果 ----
CopyObj
Hello

相关文章

  • python脚本请求数量达到上限,http请求重试问题

    python脚本请求数量达到上限,http请求重试问题

    这篇文章主要介绍了python脚本请求数量达到上限,http请求重试问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Bottle框架中的装饰器类和描述符应用详解

    Bottle框架中的装饰器类和描述符应用详解

    这篇文章主要介绍了Bottle框架中的装饰器类和描述符应用详解,具有一定参考价值,需要的朋友可以了解下。
    2017-10-10
  • Python发送网络请求(requests)

    Python发送网络请求(requests)

    这篇文章主要介绍了Python发送网络请求(requests),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • 教你怎么用python selenium实现自动化测试

    教你怎么用python selenium实现自动化测试

    今天带大家学习怎么用python selenium实现自动化测试,文中有非常详细的介绍及代码示例,对正在学习python的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05
  • Python无权点文件转化成邻接矩阵方式

    Python无权点文件转化成邻接矩阵方式

    这篇文章主要介绍了Python无权点文件转化成邻接矩阵方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Python使用matplotlib绘图无法显示中文问题的解决方法

    Python使用matplotlib绘图无法显示中文问题的解决方法

    这篇文章主要介绍了Python使用matplotlib绘图无法显示中文问题的解决方法,结合具体实例形式分析了Python使用matplotlib绘图时出现中文乱码的原因与相关解决方法,需要的朋友可以参考下
    2018-03-03
  • python实现机器学习之多元线性回归

    python实现机器学习之多元线性回归

    这篇文章主要为大家详细介绍了python实现机器学习之多元线性回归,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • 详解python调用cmd命令三种方法

    详解python调用cmd命令三种方法

    这篇文章主要介绍了详解python调用cmd命令三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • python gdal安装与简单使用

    python gdal安装与简单使用

    这篇文章主要介绍了python gdal安装与简单使用,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • Python抓取移动App数据使用mitmweb监听请求与响应

    Python抓取移动App数据使用mitmweb监听请求与响应

    这篇文章主要介绍了Python抓取移动App数据使用mitmweb监听请求与响应,mitmproxy控制台方式、mitmdump与Python对接的方式、mitmweb可视化方式,需要的朋友可以参考一下
    2022-01-01

最新评论