python中的直接赋值和使用copy()包里面的copy类一样。都是不重新生成新的对象的。
origin == object1 copy1 == object1 copy3 == object1
而python使用copy()包里面的deepcopy类,会重新生成一个新的对象,即是:
origin == object1 copy2 == object2
具体如下面代码:
import copy
origin = [1, 2, [3, 4]]
cop1 = copy.copy(origin)
cop2 = copy.deepcopy(origin)
cop3=origin
print("output[1]:")
print(origin)
print(cop1)
print(cop2)
print(cop3)
origin[2][0] = "hey!" #改变原始数组中的某个值
print("output[2]:")
print(origin)
print(cop1)
print(cop2) # 深度拷贝不变
print(cop3)
output[2]:
[1, 2, [3, 4]]
[1, 2, [3, 4]]
[1, 2, [3, 4]]
[1, 2, [3, 4]]
output[2]:
[1, 2, ['hey!', 4]]
[1, 2, ['hey!', 4]]
[1, 2, [3, 4]]
[1, 2, ['hey!', 4]]