1、存储模型,对象可以保存多少个值。如果只能保存一个值,是原子类型。如果可以保存多个值,是容器类型。数值是原子类型,元组,列表,字典是容器类型。考虑字符串,按道理,字符串应该是容器类型,因为它包含多个字符。但是,Python中没有字符类型,也就是没有字符的概念,因此,把字符串归为原子类型。
2、更新模型,对象的值是否可以更新。Python彻底分离了引用和实体,比如a=1; b=a; b=2; 可以认为,a指向的内存内容不允许修改,现在b也指向这块内存,那么我要修改b,该怎么办呢?
只能是重新分配一块内存,内容为2,然后修改b的指向,让b指向这块内存。a还是指向原来的内存,内容不变。
思考,Python为什么要这样设计?
这样设计有个好处,通过a传递给其他对象,不用担心a的值发生变化。如果要修改a的值,只能直接修改a,使它指向其它的内存。
3、访问模式,分为直接访问,顺序访问,映射访问。
数据类型 | 存储模型 | 更新模型 | 访问模型 |
数值 | 原子类型 | 不可变 | 直接访问 |
字符串 | 原子类型 | 不可变 | 顺序访问 |
元组 | 容器 | 不可变 | 顺序访问 |
列表 | 容器 | 可变 | 顺序访问 |
字典 | 容器 | 可变 | 映射访问 |