总结一下在Python中常见的浅拷贝的三种形式:切片操作、工厂函数、copy 模块中的 copy 函数
切片操作
1 | a = [1,2,3,[4,5]] |
工厂函数
1 | a = (1,2,3,[4,5]) |
copy.copy()
1 | import copy |
总结
在Python中,一切皆对象。
- 对象的赋值就是简单的对象引用,他们指向同一片内存,b 不过是 a 的别名,是引用,它们的id是一样的
- 浅拷贝会创建新对象,其内容非原对象本身的引用,而是原对象内第一层对象的引用。浅拷贝有三种形式:切片操作、工厂函数、copy 模块中的 copy 函数
- 深拷贝拷贝了对象的所有元素,包括多层嵌套的元素.深拷贝只有一种形式,copy 模块中的 deepcopy()函数
- 记住一句话:在有嵌套和可变类型的情况下,不使用深拷贝的拷贝和赋值都可以认为是浅拷贝