324rwer 发表于 2015-6-5 08:47:24

python 中内存对数据的应用


python 对内存的使用
浅拷贝解释:引用的拷贝(只拷贝父对象); 深拷贝 解释:对对象资源的拷贝;


导入模块:

1
>>> import copy





1
2
3
4
5
6
7
8
9
10
11
>>> a = ]
>>> b = a
>>> a
]
>>> b
]
>>> id(a)
139712705065616
>>> id(b)
139712705065616
#定义二元列表,标签引用,且查看内存地址一致,但不能作为依据




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

1
>>> c=copy.copy(a)




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


1
2
3
4
5
6
7
8
>>> c
]
>>> a
]
>>> id(c)
139712705068784#注意
>>> id(a)
139712705065616#注意




向序列增加值:

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




浅拷贝只拷贝父对象:


1
2
3
4
5
6
>>> id(a)
139712704967456
>>> id(c)
139712704967456
>>> id(a)
139712705357456




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

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

1
>>> d = copy.deepcopy(a)




查看地址空间

1
2
3
4
5
6
7
8
>>> id(a)
139712705065616
>>> id(d)
139712705065688
>>> id(a)
139712704967456
>>> id(d)
139712705068640 #此处是不一致的




向序列增加值:

1
2
3
4
5
6
7
8
9
10
>>> a.append('e')
>>> a
, 'd', 'e']
>>> d
, 'd']
>>> a.append('x')
>>> a
, 'd', 'e']
>>> d
, 'd']




对对象资源的拷贝:

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





页: [1]
查看完整版本: python 中内存对数据的应用