淺拷貝:
a = [1,'changhao',[]]
b = a[:]
切片操作就是淺拷貝
b 的所有地址引用原來(lái)a中的地址,當(dāng)然a與b的地址是不相同的
字符串和數(shù)字類型都是不可變的,一旦發(fā)生改變就會(huì)產(chǎn)生新的地址,刷新引用
例如:
b[0] = 100
此時(shí)id(b[0])和id(a[0])的地址就會(huì)不同
產(chǎn)生淺拷貝的方法:
切片操作,使用list()工廠函數(shù)創(chuàng)建對(duì)象
深拷貝:
深拷貝就是把所有的地址創(chuàng)建新的出來(lái),可是這樣做的話太浪費(fèi)空間,
并且對(duì)于字符串?dāng)?shù)字這類不可變類型如果重新賦值的話就會(huì)創(chuàng)建新的地址,然后刷新引用,
所以對(duì)于數(shù)字字符串一開(kāi)始不必創(chuàng)建新的地址. 對(duì)于列表等可變類型是一開(kāi)始就創(chuàng)建新的地址.
深拷貝的創(chuàng)建方式:
只能通過(guò)copy中的deepcopy創(chuàng)建.