有三种不同的模式可以帮助我们对基本类型进行分类,每种模型都展示了这些类型之间的相互关系。
一:存储模式
这种分类模式,看这种类型的对象能保存多少个对象。
一个能保存单个字面对象的类型称为原子或标量存储,那些可容纳多个对象的类型,称之为容器存储。
容器类型又带来一个新问题,那就是它是否可以容纳不同类型的对象。所有的Python容器对象都能够容纳不同类型的对象。下表按存储模式对Python的类型进行了分类。
分类 |
Python类型 |
标量/原子类型 |
数值(所有的数值类型),字符串(全部是文字) |
容器类型 |
列表、元组、字典 |
字符串看上去像一个容器类型,因为它“包含”字符,不过由于Python并没有字符类型,所以字符串是一个自我包含的文字类型。
二:更新模型
根据对象创建成功之后,它的值是否可以更新,分为可变对象和不可变对象。可变对象允许他们的值被更新,而不可变对象则不允许他们的值被更改。下表列出了支持更新和不支持更新的类型。
分类 |
Python类型 |
可变类型 |
列表,字典 |
不可变类型 |
数字、字符串、元组 |
三:访问模式
区分数据类型的首要模式是访问模式,也就是说根据访问存储的数据的方式对数据类型进行分类。在访问模式中共有三种访问方式:直接访问,顺序,和映射。下表按访问方式对数据类型进行了分类。
分类 |
Python类型 |
直接访问 |
数字 |
顺序访问 |
字符串、列表、元组 |
映射访问 |
字典 |
对非容器类型可以直接访问。所有的数值类型都归到这一类。
序列类型是指容器内的元素按从0开始的索引顺序访问。一次可以访问一个元素或多个元素(切片)。字符串,列表和元组都归到这一类。
映射类型类似序列的索引属性,不过它的索引并不使用顺序的数字偏移量取值, 它的元素无序存放, 通过一个唯一的key来访问,这就是映射类型,它容纳的是哈希键-值对的集合。