python标准库学习—copy模块-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 648463
  • 博文数量: 87
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2022
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-23 11:16
个人简介

西邮大三狗!!!

文章分类

全部博文(87)

文章存档

(47)

2014年(40)

相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: python/ruby

2015-06-08 13:00:49

该模块用于创建复合对象(包括列表,元组,字典,用户自定义对象的实例)的深浅拷贝的函数

copy(x)
对于内置类型,该函数不常用。直接使用比如 list() dict() set()等调用来创建浅拷贝,这种方式比使用copy()速度快很多

deepcopy(x)
深拷贝。

关于深浅拷贝的概念理解:

>>> class rectangle:

pass

>>> class point:

pass

>>> rec1 = rectangle()

>>> rec1.width = 10

>>> rec1.length = 20

>>> rec1.corner = point()

>>> rec1.corner.x = 1

>>> rec1.corner.y = 2

 

一个长方形对象,一个点对象,我们实例化一个rec1,它有长、宽,还有一个点坐标(x,y)

继续我们的代码:

>>> import copy

>>> rec2 = copy.copy(rec1)

>>> rec1.corner

<__main__.point object at 0x0000000002b26da0>

>>> rec2.corner

<__main__.point object at 0x0000000002b26da0>

我们用copy这个bif拷贝rec1rec2,但是拷贝的结果是不是有点跟期望不一样呢?它们两个点对象竟然是同一个对象==

一些简单的对象,如点,没有包含任何嵌入对象,copy方法已经足够了。这种复制叫做浅拷贝!

那么现在,我们应该如何实现完完整整的拷贝呢?

感谢苍天,感谢大地,copy模块中有一个叫做deepcopy的方法,他可以拷贝任何嵌入的对象。这种拷贝,我们称之为:深拷贝!

 

>>> rec2 = copy.deepcopy(rec1)

>>> rec1.corner

<__main__.point object at 0x0000000002b26da0>

>>> rec2.corner

<__main__.point object at 0x00000000033ddc50>

这样就ok了,现在的rec1rec2已经是两个不同的对象了。


阅读(3190) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图