python整理九——浅谈浅拷贝与深拷贝

来源:互联网 发布:手机五级网络 编辑:程序博客网 时间:2024/06/06 11:37

第一次接触深拷贝和浅拷贝是在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,打印出浅拷贝与深拷贝数据

 

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

原创粉丝点击