Python 进阶篇-系列文章全篇
🍑 Linux操作系统与常用命令 🍑 Linux系统性能定时监控升级,源码可复制
🍑 tcp网络程序的实现步骤,看这个就够了
🍑 http请求与响应,tcp3次握手&四次挥手
🍑 模拟浏览器实现,服务端基础框架搭建
🍑 Python进阶:利用线程实现多任务
🍑 Python进阶:进程的状态及基本操作
🍑 Python进阶:一文搞懂迭代器、生成器、协程(附案例)
🍑 数据库:了解MySQL数据类型、SQL命令
🍑 从零开始学SQL:where条件查询与连接
🍑 Python网络开发基础,实现udp聊天器小案例
🍑 多任务版TCP服务端程序开发案例+源码
🍑 【图文教程详解】Ubuntu的两种安装方式
🍑 Python中的深拷贝与浅拷贝
文章目录
- Python 进阶篇-系列文章全篇
- 1. python中可变和不可变
- 2. 简单可变类型拷贝
- 3. 复杂可变类型拷贝
- 4. 简单不可变类型拷贝
- 5. 复杂不可变类型拷贝
- 6. 切片拷贝、字典拷贝
1. python中可变和不可变
- 可变类型(mutable),创建后可以继续修改对象的内容(值)
字典、列表
- 不可变类型(unmutable) ,一旦创建就不可修改的对象(值)
数字, 字符串,元组
当内容发生修改,计算机重新分配一块内存空间
2. 简单可变类型拷贝
- 深拷贝:
- 会产生新的空间
- 能够保持各自的独立性
- 如果拷贝的对象,子对象也会拷贝(产生新的空间)
- 浅拷贝
- 不会产生新的空间
- 源对象和副本对象指向同一个空间
- 如果拷贝的对象,子对象不会拷贝(不会产生新的空间)
- 简单可变类型的拷贝总结:
简单可变类型的数据不管深拷贝还是浅拷贝,都会产生新的空间,而且保持各自的独立性
3. 复杂可变类型拷贝
- 复杂可变类型的深浅拷贝问题
- 浅拷贝,拷贝的是顶层对象的值,子对象不会拷贝(只是引用子对象)
- 深拷贝,拷贝的顶层对象和对象的子对象,子对象会产生新的内存空间
4. 简单不可变类型拷贝
- 简单不可变类型
- copy() 浅拷贝,副本和源指向同一个空间
- deepcopy() 浅拷贝,副本和源指向同一个空间
5. 复杂不可变类型拷贝
- 复杂不可变类型的拷贝问题
- 浅拷贝, 直接引用
- 深拷贝,看数据具体是可变还是不可变的,如果数据是可变的,会产生新的空间,保持数据的独立性
6. 切片拷贝、字典拷贝
- 切片拷贝: 浅拷贝(如果是简单可变类型,底层会产生新的空间)
- 字典拷贝: 浅拷贝