深拷贝、浅拷贝(笔试题)
时间: 2024-06-18 14:05:12 浏览: 92
深拷贝和浅拷贝都是复制一个对象,但是它们的处理方式是不同的。在Python中,对象分为可变对象和不可变对象。对于不可变对象,其内部的值无法修改,而对于可变对象,其内部的值可以修改。
1.浅拷贝
浅拷贝创建一个新的对象,这个新对象和原始对象共享内存中的某些部分,所以当原始对象的值发生改变时,浅拷贝对象的值也会发生改变。浅拷贝的实现方法有多种,其中最常用的是切片和copy()方法。
以下是一个浅拷贝的例子:
```python
import copy
list1 = [1, 2, [3, 4]]
list2 = copy.copy(list1)
list1 = 5
print(list1) # 输出 [1, 2, [5, 4]]
print(list2) # 输出 [1, 2, [5, 4]]
```
可以看到,当原始对象list1的值发生改变时,浅拷贝对象list2的值也会随之改变。
2.深拷贝
深拷贝创建一个新的对象,这个新对象和原始对象没有任何关联,所以当原始对象的值发生改变时,深拷贝对象的值不会发生改变。深拷贝的实现方法只有一种,就是使用copy模块的deepcopy()方法。
以下是一个深拷贝的例子:
```python
import copy
list1 = [1, 2, [3, 4]]
list2 = copy.deepcopy(list1)
list1 = 5
print(list1) # 输出 [1, 2, [5, 4]]
print(list2) # 输出 [1, 2, [3, 4]]
```
可以看到,当原始对象list1的值发生改变时,深拷贝对象list2的值并没有随之改变。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)