# 1/深拷贝对不可变里边嵌套了可变的,会先对可变进行空间重新开辟,在对外边儿的不可变也进行空间重新开辟
# 1/如果不可变里边嵌套的也是不可变,就不会开辟新空间.
# 2/对可变类型,会对任何一层可变类型数据都进行空间重新开辟.
# 3/浅拷贝对可变类型数据,只对第一层数据进行空间重新开始开辟
# 3/浅拷贝对不可变类型数据,第一层都不会重新开辟,只是多加一个指针
a = [[1, 2, 3], [4, 5, 6]]
b = a
c = copy.copy(a)
d = copy.deepcopy(a)
a.append(7)
a[1][2] = 0
print('愿列表:', a)
print('引用赋值:', b)
print('浅拷贝:', c)
print('深拷贝:', d)
'''
愿列表: [[1, 2, 3], [4, 5, 0], 7]
引用赋值: [[1, 2, 3], [4, 5, 0], 7]
浅拷贝: [[1, 2, 3], [4, 5, 0]]
深拷贝: [[1, 2, 3], [4, 5, 6]]
'''
# 拷贝到即开辟地址,没拷贝到即直接引用。开辟地址不会因原空间数据变化而变化,引用会因原空间数据变化而变化
# =赋值即是全部引用。