|
Posted on 2011-08-31 21:51 RTY 阅读(612) 评论(0) 编辑 收藏 引用 所属分类: Python
第一次接触深拷贝和浅拷贝是在c++语言中,python中,也存在着深拷贝和浅拷贝。 浅拷贝,就是给你一个引用,当源数据改变的时候,你以前获取的引用所指向的数据也会跟着变化;深拷贝,也是给你一个引用,不同的是它拷贝了份资源,给你的引用指向这份拷贝的资源,与源数据无任何联系。 以代码说明一切: - >>> ls = [2,7, 'ac', ['2a', 45,10], {'a' : 'a1', 'b':123, 'z': 4, 'r' : 33}, 0]
- >>> ls2 = ls
- >>> ls3 = ls[:]
- >>> import copy
- >>> ls4 = copy.deepcopy(ls)
- >>> ls
- [2, 7, 'ac', ['2a', 45, 10], {'a': 'a1', 'r': 33, 'b': 123, 'z': 4}, 0]
- >>> ls2
- [2, 7, 'ac', ['2a', 45, 10], {'a': 'a1', 'r': 33, 'b': 123, 'z': 4}, 0]
- >>> ls3
- [2, 7, 'ac', ['2a', 45, 10], {'a': 'a1', 'r': 33, 'b': 123, 'z': 4}, 0]
- >>> ls4
- [2, 7, 'ac', ['2a', 45, 10], {'a': 'a1', 'r': 33, 'b': 123, 'z': 4}, 0]
- >>> ls.append(2008)
- >>> print ls
- [2, 7, 'ac', ['2a', 45, 10], {'a': 'a1', 'r': 33, 'b': 123, 'z': 4}, 0, 2008]
- >>> print ls2
- [2, 7, 'ac', ['2a', 45, 10], {'a': 'a1', 'r': 33, 'b': 123, 'z': 4}, 0, 2008]
- >>> print ls3
- [2, 7, 'ac', ['2a', 45, 10], {'a': 'a1', 'r': 33, 'b': 123, 'z': 4}, 0]
- >>> print ls4
- [2, 7, 'ac', ['2a', 45, 10], {'a': 'a1', 'r': 33, 'b': 123, 'z': 4}, 0]
第1行,初始化一个list 第2—5行,浅拷贝与深拷贝 第6—13行,源数据发生变化前,打印出源数据以及浅拷贝和深拷贝的数据 第14行,源数据增加一个新数据 第15—22,打印出浅拷贝与深拷贝数据 看到结果,就明白浅拷贝与深拷贝了
|