python的赋值(复制)、浅拷贝、深拷贝

在python中,对象赋值实际上是对象的引用。当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用

1.赋值:

将一个变量赋值给另一个变量,这个过程叫做赋值。赋值会导致多个变量同时指向一块内存,所以此时不管是 == 或者 is 都返回 True
通俗的说直接赋值是,传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变

赋值.jpg


2.拷贝:

就是一个变量的值传给另外一个变量。在python 中 id() 方法可以查看存放变量的内存地址。

(1)浅拷贝:

浅拷贝是对于一个对象的顶层拷贝。
通俗的理解是:拷贝了引用,并没有拷贝内容

浅拷贝01.jpg

浅拷贝02.jpg

copy浅拷贝,没有拷贝子对象,所以原始数据改变,子对象会改变
浅拷贝03.jpg

(2)深拷贝:

深拷贝是对于一个对象所有层次的拷贝(递归)
深拷贝,包含对象里面的自对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变

深拷贝.jpg


(3)拷贝的其他方式:

注意常量类型的深浅拷贝问题(如字符串、数值型、元组)


常量.jpg
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 当爱已成落叶黄,何曾桥下春波绿。 深情不必有人懂,永远之后永远殇。
    文静流阅读 268评论 0 1
  • 本人硕士应届研究生,管理类工科学位 今天下午,第一次参加公司的宣讲会,内心很重视这一次,梳妆打扮一番,中午...
    零下4度阅读 343评论 3 0
  • 核心 一、马斯克与一般创业者和企业家到底有什么不同;二、马斯克的公司为什么会如此出众;三、创业者可以从马斯克身...
    Lisa的小世界阅读 762评论 0 0
  • 一 在我的记忆宫殿里,有一个房间,只为你一个人留。我会时不时打开门,清理尘土,开窗通风,它就会焕然一新。 那一天,...
    wendy静儿阅读 373评论 1 3
  • 今天一天看做了一下大致的记录,看了一下,做最有意义的事情就是上午看了一个小时的书,做了八个体弱儿,修改了一个PP...
    晴冰阅读 174评论 0 0