Python 存储模型
来源:互联网 发布:太原育英中学知乎 编辑:程序博客网 时间:2024/06/05 20:29
1、Python彻底分离了对象和引用,可以认为内存中的对象都是不可修改的,每次修改引用,相当于在堆上重新创建一个对象,引用指向新对象。
2、对于数值和字符串,修改意味着引用指向一个新对象。
3、集合中的元素都是引用。考虑元组,元组中的引用不能增加删除,也不能修改引用的指向。但是元组本身也是个引用,可以指向另一个元组。
4、考虑列表,列表中的引用可以增加删除,也可以修改引用的指向。列表本身也是个引用,也可以指向另一个列表。
5、考虑字典,字典的key不能修改指向,value可以修改指向。字典本身也是个引用,也可以指向另一个字典。
6、考虑下面的情况,listB = listA, listB 与 listA 指向同一个列表,listB修改元素也会影响到listA,如果不想受到影响怎么办?
进行深拷贝,listB = deepcopy(listA), 这种情况下,listB只是对listA中的元素(引用)做了copy,对应的元素还是指向同一个对象。当listB修改元素的指向时,listA不受影响。
在Python中,深拷贝也只是拷贝引用,不会对内容拷贝。因此,对于包含引用的引用(也就是集合),深拷贝才有意义。
7、为什么设计出元组?毕竟列表可以完全取代元素。
这体现了“最小特权原则”,也就是尽量限制别人不该有的权利。元组是一种弱化了的列表,不允许对其中的引用增加删除,也不允许修改引用的指向。
0 0
- Python 存储模型
- python 列表存储模型迷惑
- 存储模型
- 存储模型
- python+sklearn利用特征文件来训练和测试模型并使用joblib方法持久化存储模型
- SNIA 共享存储模型
- 好的存储模型
- 树状模型存储格式
- 映射的存储模型
- 数据存储模型
- DB2数据库存储模型
- Bitcask存储模型
- LSM树存储模型
- C语言 存储模型
- Bitcask存储模型
- 云存储结构模型
- Bitcask存储模型
- LSM树存储模型
- grep 命令
- Nginx 403 Forbidden的问题
- 利用java的swing组件制作简易计算器
- Ubuntu 14.04 安装Google Chrome
- 手机端 不断向上或者向下跳动的 提示箭头
- Python 存储模型
- Codeforces Round #407 (Div. 2)
- Codeforces 510D Fox And Jumping【数论+Dp+压缩空间】好题~
- 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
- 初识JVM byte code
- ios学习网址
- SAMBA文件服务器案例
- sklearn.model_selection.GridSearchCV 中文
- 完美兼容IE,chrome,ff的设为首页、加入收藏及保存到桌面js代码