python的浅拷贝没有拷贝子对象,子对象改变,拷贝的对象也会改变。而深拷贝是无论原对象怎么改变,深拷贝的对象始终不变。
import copy
a = [1,2,3,["a","s","d"]]
c = copy.copy(a)
d = copy.deepcopy(a)
print("浅拷贝对象、深拷贝对象与原对象比较")
print(a)
print(c)
print(d)
print("改变原对象后,对比原对象与浅拷贝对象、深拷贝对象的区别")
a.append(5)
print(a)
print(c)
print(d)
print("改变子对象后,比较原对象与浅拷贝对象、深拷贝对象的区别")
a[3].append("q")
print(a)
print(c)
print(d)
输出结果
浅拷贝对象、深拷贝对象与原对象比较
[1, 2, 3, ['a', 's', 'd']]
[1, 2, 3, ['a', 's', 'd']]
[1, 2, 3, ['a', 's', 'd']]
改变原对象后,对比原对象与浅拷贝对象、深拷贝对象的区别
[1, 2, 3, ['a', 's', 'd'], 5]
[1, 2, 3, ['a', 's', 'd']]
[1, 2, 3, ['a', 's', 'd']]
改变子对象后,比较原对象与浅拷贝对象、深拷贝对象的区别
[1, 2, 3, ['a', 's', 'd', 'q'], 5]
[1, 2, 3, ['a', 's', 'd', 'q']]
[1, 2, 3, ['a', 's', 'd']]