Python 里的可变与不可变:赋值到底复制了什么
三个函数先分清
a = [1, 2]
b = a # 同一对象
c = a[:] # 浅拷贝
import copy
d = copy.deepcopy(a) # 深拷贝
print(id(a) == id(b)) # True
print(id(a) == id(c)) # False
什么时候会踩坑
- 函数默认参数写成
def f(x, items=[]),列表在多次调用间共享 - 嵌套列表浅拷贝后,内层仍然共享
记住一句话:赋值不复制,拷贝才复制。