Python中的Copy和Deepcopy
来源:互联网 发布:unity3d粒子系统教程 编辑:程序博客网 时间:2024/05/01 18:36
原链接:(http://www.cnblogs.com/nobkb/p/3322684.html)
一 Python的对象:
Python存在大量的对象,我们一般提到的对象都是C中的结构体在堆中申请的一块内存(以CPython为例),每一个对象都有ID,可以通过ID(Object)获得。对象的范围包括内建类型的对象(如int类型的对象123,str的对象"test",list的对象[],生成器对象等等)、用户自建类型的对象、函数(lambda函数,生成器函数)、类型、Ture、False(bool类型的对象)、None(NoneType的对象)。
二,Python的引用计数:
所有对象都采用引用计数,给对象分配新名词或者将其放入容器中,这个对象的引用计数都会增加。当离开作用域或者被重新赋值的时候,这个对象的引用计数就会减少。当减少为0,垃圾收集器会将其销毁。
Python中的对象分为immutable和mutabel,作为immutable的int、char和tuple,相同的值在内存中只会生成一次,每次将其赋值到变量中,便会增加一个引用计数。而作为mutable的list、dict、xrange(生成器)和lambda(函数),每次生成都会在内存中生成一个新的对象。
另外:传参的时候,若参数为mutable,则传的是引用,若参数为immutable,则传的是值。
a = 123 #创建一个值为123的对象b = 123 #增加123的引用计数a = 111 #创建一个值为111的对象,减少123的引用计数b = a #增加111的引用计数c = [] #创建一个空队列d = [] #创建一个新的空队列c = [] #再创建一个新的空队列,减少原队列的引用计数c = d #增加d队列的引用计数,减少c队列的引用计数c.append(1) #创建一个值为1的对象,不改变原队列的引用计数三 Shallow copy和Deep copy的区别Python document中是这么说的:
- A shallow copy constructs a new compound object and then (to the extent possible) inserts references into it to the objects found in the original.
- A deep copy constructs a new compound object and then, recursively, inserts copies into it of the objects found in the original.
这其中的区别就是浅复制会简单的复制引用,不管他是mutable还是immutable。而深复制则会递归地复制immutable对象引用,对于mutable,则会新建一个对象。
import copya = [1, 2]b = [a, 3]c = copy.copy(b) #c = [[1, 2], 3]d = copy.deepcopy(b) #d = [[1, 2], 3]a.append(3) #c = [[1, 2, 3], 3] #d = [[1, 2], 3]
- Python中的Copy和Deepcopy
- Python中的copy和deepcopy
- Python中copy和deepcopy中的区别
- Python 中的 ‘=’,copy,deepcopy
- python中的copy与deepcopy
- python copy.copy和copy.deepcopy
- Python中的引用,copy和deepcopy的区别
- python里的copy和deepcopy
- Python中“=”、切片、copy和deepcopy
- python 浅copy和深deepcopy
- python的copy.copy()和copy.deepcopy()方法
- python copy deepcopy
- python copy & deepcopy 区别
- python copy & deepcopy 区别
- python copy & deepcopy 区别
- python copy与deepcopy
- Python基础-copy & deepcopy
- 拷贝 copy()和deepcopy()
- 关于如何在matlab中添加新的工具箱的整理和心得
- MFC单文档框架理解
- s5pv210启动流程简析
- JPEG2000和JPEG的比较
- C++学习之路(一)
- Python中的Copy和Deepcopy
- win7电脑磁盘文件以分组方式展现解决方案
- 猜数字游戏
- 学习笔记
- 长沙现场赛A题
- 计算机视觉的专家和网站
- ApiDemo 学习 CameraPreview 和 Clipping
- web网站结构
- 滚动数组(2)