美文网首页
python中的赋值,深浅拷贝

python中的赋值,深浅拷贝

作者: 小双2510 | 来源:发表于2017-11-08 00:47 被阅读0次

这个是Python中的比较重要的知识点。

自己画了一个知识导图,下面再详细解释。

Screen Shot 2017-11-07 at 11.39.56 AM.png

本文有三个方面的问题要说明:

1.

有的帖子上说“python是没有变量的,只有标签”,对这句话的理解,应该是这样:


Screen Shot 2017-11-07 at 11.25.10 AM.png

2.

关于python的可变对象和不可变对象,请看这个帖子里的解释
http://www.jianshu.com/p/c5582e23b26c
可变对象,在被修改时,不发生“分身”或者说“复制”,直接得到修改;
不可变对象,在被修改时,发生“分身”,被修改的是他的“替身”,而不是他自己;

这里直接把讲解的特别好的炸鸡叔的帖子印过来:


Screen Shot 2017-11-07 at 11.50.54 AM.png
Screen Shot 2017-11-07 at 11.51.12 AM.png
Screen Shot 2017-11-07 at 11.51.27 AM.png
Screen Shot 2017-11-07 at 11.51.37 AM.png
Screen Shot 2017-11-07 at 11.51.47 AM.png
Screen Shot 2017-11-07 at 11.51.57 AM.png
Screen Shot 2017-11-07 at 11.52.15 AM.png

3.

浅拷贝和深拷贝:可以这么理解,首先只有可变的对象才可以深拷贝;在深拷贝一个可变对象的时候,他内部的可变元素被复制--“分身”,他内部的不可变元素不被复制--“不分身”。
图片来源:http://www.cnblogs.com/wilber2013/p/4645353.html

赋值:


Screen Shot 2017-11-07 at 11.57.53 AM.png

浅拷贝:


Screen Shot 2017-11-07 at 11.58.05 AM.png
深拷贝:
Screen Shot 2017-11-07 at 11.58.18 AM.png

还可以进一步参考这篇文章:http://www.jianshu.com/p/efa9dd51f5cc
浅拷贝时,当“真身”发生改变时,“替身"中的可变元素会跟着改变,不可变元素不会动。

Screen Shot 2017-11-07 at 12.12.50 PM.png

深拷贝时,当”真身“发生改变,“替身”中的可变元素和不可变元素均不会跟随变化。

Screen Shot 2017-11-07 at 12.12.57 PM.png
可以理解为:深拷贝发生时,所有的元素都产生替身。之所以不可变的元素没有在拷贝时产生替身,是因为反正只要想改变它,也会自动“分身”。而浅拷贝发生时,所有的元素都不是“替身”,都是“真身”。只不过由于不可变元素发生改变时的特殊性,而导致了改变。

相关文章

  • Python中的赋值及深浅拷贝

    Python中的赋值及深浅拷贝 赋值 示例 打印 浅拷贝 示例 打印 深拷贝 示例 打印 三层列表演示 示例 打印

  • 简介深浅拷贝

    深浅拷贝 python 直接赋值,浅拷贝和深拷贝 直接赋值 其实就是对象的引用 (可以理解成浅拷贝) 浅拷贝: 拷...

  • copy见解

    拷贝就是拷贝,何来深浅之说? Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,...

  • Python中的赋值、深浅拷贝

    拷贝对象的意义在于:如果需要在不更改源数据的情况下,修改数据,此时需要一个拷贝对象 python提供copy来完成...

  • python中的赋值,深浅拷贝

    这个是Python中的比较重要的知识点。 自己画了一个知识导图,下面再详细解释。 本文有三个方面的问题要说明: 1...

  • Python对象的引用,深拷贝和浅拷贝

    前言 在Python中,Python对象的赋值,深浅拷贝之间是有差异的,今天就来总结一下三者之间的区别. 对象赋值...

  • python中的赋值与深浅拷贝

    对于赋值运算来说,l1与l2指向的是同一个内存地址,所以他们是完全一样的。 对于浅copy来说,第一层创建的是新的...

  • Python中的引用赋值,深拷贝,浅拷贝

    摘要:Python,引用赋值,深拷贝,浅拷贝 总结一下Python中的变量的引用赋值,深拷贝和浅拷贝,先上结论 赋...

  • 深、浅拷贝

    说到深浅拷贝,Python和其他语言一样也涉及到内存分配问题,对象的赋值和拷贝有很大差别,赋值是把变量和内存某块连...

  • 什么是深拷贝什么是浅拷贝,分别在什么时候用

    根据拷贝内容的不同,分为深浅拷贝 深拷贝:指针赋值,且内容拷贝 浅拷贝:只是简单的指针赋值 苹果为什么这么设计呢?...

网友评论

      本文标题:python中的赋值,深浅拷贝

      本文链接:https://www.haomeiwen.com/subject/bvnsmxtx.html