码迷,mamicode.com
首页 > 编程语言 > 详细

python 中内存对数据的应用

时间:2015-06-04 17:23:38      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:python 内存对数据的应用

python 对内存的使用

拷贝

解释引用的拷贝(只拷贝父对象);

 

深拷贝

 解释对对象资源的拷贝;



导入模块:

>>> import copy
>>> a = [1,2,3,[‘a‘,‘b‘,‘d‘]]
>>> b = a
>>> a
[1, 2, 3, [‘a‘, ‘b‘, ‘d‘]]
>>> b
[1, 2, 3, [‘a‘, ‘b‘, ‘d‘]]
>>> id(a)
139712705065616
>>> id(b)
139712705065616
#定义二元列表,标签引用,且查看内存地址一致,但不能作为依据

调用copy.copy模块,进行拷贝    浅拷贝

>>> c=copy.copy(a)

观察c的地址空间,通过copy是独立的

>>> c
[1, 2, 3, [‘a‘, ‘b‘, ‘d‘]]
>>> a
[1, 2, 3, [‘a‘, ‘b‘, ‘d‘]]
>>> id(c)
139712705068784  #注意
>>> id(a)
139712705065616  #注意

向序列增加值:

>>> a.append(‘d‘)
>>> a
[1, 2, 3, [‘a‘, ‘b‘, ‘d‘], ‘d‘]
>>> b
[1, 2, 3, [‘a‘, ‘b‘, ‘d‘], ‘d‘]  #b指向的是同一地址空间
>>> c
[1, 2, 3, [‘a‘, ‘b‘, ‘d‘]]       #c未改变

浅拷贝只拷贝父对象:

>>> id(a[3])
139712704967456
>>> id(c[3])
139712704967456
>>> id(a[4])
139712705357456

#注意上述可变类型的子对象地址空间未改变,

调用copy.deepcopy模块,进行拷贝    深拷贝

>>> d = copy.deepcopy(a)

查看地址空间

>>> id(a)
139712705065616
>>> id(d)
139712705065688
>>> id(a[3])
139712704967456
>>> id(d[3])
139712705068640 #此处是不一致的

向序列增加值:

>>> a.append(‘e‘)
>>> a
[1, 2, 3, [‘a‘, ‘b‘, ‘d‘, ‘d‘], ‘d‘, ‘e‘]
>>> d
[1, 2, 3, [‘a‘, ‘b‘, ‘d‘, ‘d‘], ‘d‘]
>>> a[3].append(‘x‘)
>>> a
[1, 2, 3, [‘a‘, ‘b‘, ‘d‘, ‘d‘, ‘x‘], ‘d‘, ‘e‘]
>>> d
[1, 2, 3, [‘a‘, ‘b‘, ‘d‘, ‘d‘], ‘d‘]

对对象资源的拷贝:

>>> id(a[3])
139712704967456
>>> id(d[3])
139712705068640  
#注意上述可变类型的子对象地址空间发生改变


本文出自 “思想大于技术” 博客,谢绝转载!

python 中内存对数据的应用

标签:python 内存对数据的应用

原文地址:http://linuxboys.blog.51cto.com/9150052/1658484

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!