简而言之,浅拷贝就是只是复制了引用,并没有复制引用指向地址的内容,可以看做是同一个对象,使用is操作符时返回true,而深拷贝刚好相反,不管变量或者对象包含多少其他的引用都原模原样复制一份,即在内存中开辟了新的空间。

      1、Python的浅拷贝:

     Python浅拷贝和深拷贝的思考

    浅拷贝内存示意图:

    Python浅拷贝和深拷贝的思考

     2、Python的深拷贝

     Python浅拷贝和深拷贝的思考

    深拷贝内存示意图:

   Python浅拷贝和深拷贝的思考

  在copy包中还有一个复制的方法为copy(),这个方法有点特殊,如果是可变类型对象那么会重新创建第一层,嵌套的引用不会重新开辟内存,但是如果为不可变类型对象只是指向同一块内存:

   Python浅拷贝和深拷贝的思考

   这里需要额外说的"=="只是比较值,“is”则是比较是否为同一个对象。

   即list1 == list2 为不同的对象指向不同的内存地址,但是返回True,而list1 is list2为False,因为不同对象。

   

  

相关文章:

  • 2021-09-03
  • 2021-09-11
  • 2022-12-23
  • 2022-12-23
  • 2021-09-04
猜你喜欢
  • 2021-10-19
  • 2022-12-23
  • 2021-11-09
  • 2021-08-27
  • 2021-12-27
  • 2021-06-14
  • 2021-12-23
相关资源
相似解决方案