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