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