• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > 举例区分Python中的浅复制与深复制

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

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了现货投资举例,企业风险管理举例,早泄举例,交流电源的举例,举例英语等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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]]
</div>

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

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]]
</div>

改变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
</div>

</div>

您可能想查找下面的文章:

  • 举例区分Python中的浅复制与深复制
  • 举例讲解Python中is和id的用法
  • 举例介绍Python中的25个隐藏特性

相关文章

  • Python捕捉和模拟鼠标事件的方法
  • 横向对比分析Python解析XML的四种方式
  • Python中实现参数类型检查的简单方法
  • python中安装模块包版本冲突问题的解决
  • 分享Python开发中要注意的十个小贴士
  • python解析模块(ConfigParser)使用方法
  • python 装饰器功能以及函数参数使用介绍
  • python生成IP段的方法
  • Python自动化部署工具Fabric的简单上手指南
  • 详解python的几种标准输出重定向方式

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • 浅谈python字典多键值及重复键值的使用
    • python获取list下标及其值的简单方法
    • 在Python中通过threading模块定义和调用线程的方法
    • py中的目录与文件判别代码
    • python logging类库使用例子
    • Python中处理字符串之islower()方法的使用简介
    • Python使用函数默认值实现函数静态变量的方法
    • Python实现遍历目录的方法【测试可用】
    • 利用Python的Twisted框架实现webshell密码扫描器的教程
    • 实例探究Python以并发方式编写高性能端口扫描器的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有