元組比較特殊
1、----元組本身為不可變類型
import copy v1 = (1, 2, 3, 4) v2 = copy.copy(v1) print(id(v1), id(v2)) v3 = copy.deepcopy(v1) print(id(v1), id(v3)) 輸出: 31450280 31450280 31450280 31450280
小結:元組本身是不可變類型,就像str、int、boor一樣,所在在深淺拷貝時,它們的內存地址是一樣的。
2、----當元組中嵌套可變類型時:
v1 = (1, 2, 3, [1, 2, 3], 4) import copy v2 = copy.copy(v1) print(id(v1), id(v2)) v3 = copy.deepcopy(v1) print(id(v1), id(v3)) 輸出: 4023752 4023752 4023752 35885304
小結:當元組中嵌套可變類型,深拷貝就會把元且重新生成一份。
總結:
在不可變類型中,深淺拷貝時,都不會再開辟內存空間,用的都是同一內存地址。
在嵌套可變類型時,深淺拷貝就會重新開辟一塊內存空間,不可變的值還是指向原來的值的地址。
不同的就是,在嵌套可變類型中:
淺拷貝: 只拷貝第一層
深拷貝: 拷貝所有的嵌套可變類型