Python浅拷贝和深拷贝的思考

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chuan_day/article/details/79724554

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

      1、Python的浅拷贝:

     

    浅拷贝内存示意图:

    

     2、Python的深拷贝

     

    深拷贝内存示意图:

   

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

   

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

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

   

  

猜你喜欢

转载自blog.csdn.net/chuan_day/article/details/79724554