Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
2010-08-04 17:24
477 查看
Python中的对象之间赋值时是按引用传递的,如果需要拷贝对象,需要使用标准库中的copy模块。
1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。通俗点就是部分拷贝
2. copy.deepcopy 深拷贝 拷贝对象及其子对象,通俗点就是完全拷贝
1 a = ["1","2","3",['a','b']]
2 b = a #引用
3
4 c=copy.copy(a)#浅拷贝
5
6 d = copy.deepcopy(a) #深度拷贝
7
8 a.remove("1")
9 a[2].append('c')
print a
print b
print c
print c
运行结果:
['2', '3', ['a', 'b', 'c']]
['2', '3', ['a', 'b', 'c']]
['1', '2', '3', ['a', 'b', 'c']]
['1', '2', '3', ['a', 'b']] 我们可以看到,与c语言不同的是,=后不是两个不同的值,而是一个引用的值。要注意。。
作者:xiaoxia
出处:http://cnblogs.com/xiaoxia
我的淘宝:http://shop62115161.taobao.com/
本文遵从GNU 的自由文档许可证(Free Document License)的条款,欢迎转载、修改、散布。
1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。通俗点就是部分拷贝
2. copy.deepcopy 深拷贝 拷贝对象及其子对象,通俗点就是完全拷贝
1 a = ["1","2","3",['a','b']]
2 b = a #引用
3
4 c=copy.copy(a)#浅拷贝
5
6 d = copy.deepcopy(a) #深度拷贝
7
8 a.remove("1")
9 a[2].append('c')
print a
print b
print c
print c
运行结果:
['2', '3', ['a', 'b', 'c']]
['2', '3', ['a', 'b', 'c']]
['1', '2', '3', ['a', 'b', 'c']]
['1', '2', '3', ['a', 'b']] 我们可以看到,与c语言不同的是,=后不是两个不同的值,而是一个引用的值。要注意。。
作者:xiaoxia
出处:http://cnblogs.com/xiaoxia
我的淘宝:http://shop62115161.taobao.com/
本文遵从GNU 的自由文档许可证(Free Document License)的条款,欢迎转载、修改、散布。
相关文章推荐
- Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
- Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
- Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
- Python拷贝对象(浅拷贝copy与深拷贝deepcopy)
- Python天天美味(22) - 拷贝对象(深拷贝deepcopy与浅拷贝copy)
- Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
- Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
- Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
- Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
- Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
- Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
- Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
- Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
- Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
- Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
- Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
- Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
- Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
- Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
- Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)