通过id内存地址发生变化
print()打印出来的变化,这种现象就是
’拷贝‘,’浅拷贝‘,’深拷贝‘
拷贝(赋值)
lt = [1,2,3]
lt = lt
lt.append(4)
print(lt)
# 因为列表是可变类型,所以lt的值变化,lt2的值也跟着变化
print(lt2)
浅拷贝copy.copy()
浅拷贝,拷贝出来的值内存地址都一样,但此时需要引用库
一般情况下L2拷贝不来的值,不会随着L1的变化而变化
lt2没有变化的情况
import copy
lt =[1,2,3]
lt2 = copy.copy(lt)
lt.appent(4)
print(lt)===>[1,2,3,4]
print(lt2)==>[1,2,3]
lt2变化的情况
import copy
lt = [1,2,3,[4,5,6]]
lt2 = copy.copy(lt)
lt(-1).appent(7)
print(lt)
print(lt2)
深拷贝copy.deepcopy()
深拷贝中的拷贝对象,可变类型地址改变,不可变类型不改变
import copy
lt = [1,2,3,[4,5,6]]
lt2 = copy.deepcopy(lt)
lt(-1).appent(7)
print(lt)
print(lt2)
不管怎样深拷贝的拷贝对象都不会改变
牢记:拷贝/浅拷贝/深拷贝 只针对可变数据类型
总结
拷贝:当lt2为lt的拷贝对象时,lt内的可变类型变化,lt2就变化;lt内的不可变类型变化,lt2就变化
简单的赋值
浅拷贝:当lt2为lt的浅拷贝对象时,lt内可变类型变化,lt2就变化;lt内的不可变化类型变化,lt2就不变化
copy.copy()
深拷贝:当lt2为lt深拷贝对象时,lt内的可变类型变化,lt2就不变化;lt内的不可变类型变化,lt2就不变化
copy.deepcopy()