| 直接赋值 | 浅拷贝 | 深拷贝 | |
| 定义 | 默认浅拷贝传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变 | 浅拷贝,没有拷贝子对象,所以原始数据改变,子对象会改变 | 深拷贝,包含对象里面的自对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变 |
| 赋值 | alist=[1,2,3,["a","b"]] b=alist | alist=[1,2,3,["a","b"]] import copy c=copy.copy(alist) | alist=[1,2,3,["a","b"]] import copy d=copy.deepcopy(alist) |
| 操作Ⅰ | alist.append(5) print b | alist.append(5) print c | alist.append(5) print d |
| 结果Ⅰ | [1, 2, 3, ['a', 'b'], 5] | [1, 2, 3, ['a', 'b']] | [1, 2, 3, ['a', 'b']] |
| 操作Ⅱ | alist[3].append('cccc') print b | alist[3].append('cccc') print c | alist[3].append('cccc') print d |
| 结果Ⅱ | [1, 2, 3, ['a', 'b', 'cccc'], 5] | [1, 2, 3, ['a', 'b', 'cccc']] #子对象被改变了 | [1, 2, 3, ['a', 'b']] |
本文深入探讨了Python中对象赋值、浅拷贝与深拷贝的区别,通过实例展示了不同操作下对象变化的影响,揭示了在处理复杂数据结构时选择合适拷贝方式的重要性。
8659

被折叠的 条评论
为什么被折叠?



