简答题第1题:浅拷贝与深拷贝

This commit is contained in:
王堃营
2026-10-07 23:34:49 +08:00
parent a0dce24133
commit 1716472762
+25
View File
@@ -21,3 +21,28 @@
10. get() 返回 None,[] 抛 KeyError —— `user.get("city")` 键不存在返回 None(不报错),`user["city"]` 键不存在抛 KeyError。
二、简答题
第 1 题:浅拷贝与深拷贝
```python
a = [[1, 2], [3, 4]]
b = a.copy()
import copy
c = copy.deepcopy(a)
```
三者关系:
- `a`:原列表 `[[1, 2], [3, 4]]`
- `b = a.copy()`:浅拷贝,外层列表是新的,但内层列表还是和 a 共享的同一个对象(`b[0] is a[0]` 为 True)
- `c = copy.deepcopy(a)`:深拷贝,外层、内层全是独立的新对象(`c[0] is a[0]` 为 False)
执行 `a[0].append(99)` 后:
- `b` → `[[1, 2, 99], [3, 4]]`(因为 b[0] 和 a[0] 是同一个内层列表,一起变了)
- `c` → `[[1, 2], [3, 4]]`(c 的内层是独立副本,不受影响)
原因:浅拷贝只复制最外层容器,内部元素仍是引用(指向同一对象);深拷贝会递归复制每一层,得到完全独立的对象。