python中赋值、浅拷贝、深拷贝的区别

1.赋值

  python中的赋值实际上就是对象的引用

  

  比如说在这个例子中,;hello'表示一个对象,而变量a、b就是这个对象的引用(别名),所以两个变量的id也是相同的

  图示:

  

  

  所以当我们改变变量a的时候,实际上改变的是对象a指向的对象,当然b也会随之改变

2. 浅拷贝

      a和b分别指向一个独立的对象。

      但这两个对象的子对象却是指向同一对象。

  图示:

  

  

3. 深拷贝

  

  图示:

  

  

最后:浅拷贝和深拷贝的不同仅仅是对组合对象来说,所谓的组合对象就是包含了其它对象的对象,如列表,类实例。而对于数字、字符串以及其它“原子”类型,没有拷贝一说,产生的都是原对象的引用

图解部分参考:https://www.runoob.com/w3cnote/python-understanding-dict-copy-shallow-or-deep.html

https://blog.csdn.net/colourful_sky/article/details/81263998

原文地址:https://www.cnblogs.com/cc111/p/10960254.html