posts - 319, comments - 22, trackbacks - 0, articles - 11
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

python——浅谈浅拷贝与深拷贝

Posted on 2011-08-31 21:51 RTY 阅读(609) 评论(0)  编辑 收藏 引用 所属分类: Python

第一次接触深拷贝和浅拷贝是在c++语言中,python中,也存在着深拷贝和浅拷贝。

浅拷贝,就是给你一个引用,当源数据改变的时候,你以前获取的引用所指向的数据也会跟着变化;深拷贝,也是给你一个引用,不同的是它拷贝了份资源,给你的引用指向这份拷贝的资源,与源数据无任何联系。

 

以代码说明一切:

  1. >>> ls = [2,7'ac', ['2a'45,10], {'a' : 'a1''b':123'z'4'r' : 33}, 0]
  2. >>> ls2 = ls
  3. >>> ls3 = ls[:]
  4. >>> import copy
  5. >>> ls4 = copy.deepcopy(ls)
  6. >>> ls
  7. [27'ac', ['2a'4510], {'a''a1''r'33'b'123'z'4}, 0]
  8. >>> ls2
  9. [27'ac', ['2a'4510], {'a''a1''r'33'b'123'z'4}, 0]
  10. >>> ls3
  11. [27'ac', ['2a'4510], {'a''a1''r'33'b'123'z'4}, 0]
  12. >>> ls4
  13. [27'ac', ['2a'4510], {'a''a1''r'33'b'123'z'4}, 0]
  14. >>> ls.append(2008)
  15. >>> print ls
  16. [27'ac', ['2a'4510], {'a''a1''r'33'b'123'z'4}, 02008]
  17. >>> print ls2
  18. [27'ac', ['2a'4510], {'a''a1''r'33'b'123'z'4}, 02008]
  19. >>> print ls3
  20. [27'ac', ['2a'4510], {'a''a1''r'33'b'123'z'4}, 0]
  21. >>> print ls4
  22. [27'ac', ['2a'4510], {'a''a1''r'33'b'123'z'4}, 0]

第1行,初始化一个list

第2—5行,浅拷贝与深拷贝

第6—13行,源数据发生变化前,打印出源数据以及浅拷贝和深拷贝的数据

第14行,源数据增加一个新数据

第15—22,打印出浅拷贝与深拷贝数据

 

看到结果,就明白浅拷贝与深拷贝了


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理