元组比较特殊
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
小结:当元组中嵌套可变类型,深拷贝就会把元且重新生成一份。
总结:
在不可变类型中,深浅拷贝时,都不会再开辟内存空间,用的都是同一内存地址。
在嵌套可变类型时,深浅拷贝就会重新开辟一块内存空间,不可变的值还是指向原来的值的地址。
不同的就是,在嵌套可变类型中:
浅拷贝: 只拷贝第一层
深拷贝: 拷贝所有的嵌套可变类型