
2.1 核心内置数据类型概述
一个对象支持的操作及它的描述是由数据类型来决定的。所以,数据类型非常重要。Python 语言提供了大量内置的、功能比较丰富的数据类型。我们建议在 Python 程序
开发的过程中,尽量使用Python内置的数据类型,这主要基于以下几个理由[1]:
(1)使用Python内置的数据类型可以让我们的程序编写变得更为容易。
(2)很多扩展的程序组件都是基于内置的数据类型来开发或实现的。
(3)使用内置数据类型开发程序比使用自定义的数据结构的效率更高。
(4)内置的数据类型是Python语言的一个标准组成部分,这也是最基本的理由。
Python 的数据类型分为数值类型(包括整型、浮点型等)、序列类型(包括列表、元组、字符串,字符串本质上也是一个序列类型)、集合类型、字典(是一种比较特殊的映射类型)及其他类型。
在具体讲解每个数据类型及它所支持的操作之前,经常会检查一个对象的类型是什么,Python 提供了一个特定的内置函数 type()来实现这类操作。它返回的是一个叫作类型对象的特殊类型,可以把它归类到其他类型中。
由于Python具有动态类型,在声明变量的时候,我们不用明确指明它的数据类型是什么,但是我们在学习数据类型的过程中,必须要了解它到底属于什么类型,以便知道它究竟能进行哪些操作。
1.类型检测函数type()
使用 type()函数可快速检查某一个变量或常量的类型,以便确定它们所能进行操作的种类。

说明“8”属于int型,即整型。但目前我们并没有把它放到变量中。
“<class'int'>”是一个类型对象,是用来描述数据类型的一个类型对象。

检测的结果表明,小数“3.14”是float型,即浮点型。
当然也可以检测变量的类型,例如:

type()函数非常简单,不管是通过变量名称还是值都能快速帮我们检测出某一个对象的实际类型是什么。
2.空对象(None)
Python中还有一个特殊的类型称为空对象。
空对象(None):一个特殊的常量,表示什么都没有。
3.布尔(bool)型的本质
Python 中的 bool 型,表示事物的两种状态,真(True)或假(False),注意,没有第三种状态。通常它用来测试一个结果是“真”或“假”。看下面的示例:

注意:“5 > 3”或者“5 < 3”其实是一个表达式,表达式是用于创建处理对象的。如“5>3”创建一个对象,“5>3”这个对象是有类型的,可以用type()函数测试所创建的这个对象的类型。
简单地讲,bool型中的True和False对应着int型中的1和0。在有些编程语言里,bool型的True和False与int型的1和0是可以互换的,而有的编程语言中bool型是单独定义的,比如在C#中,它的bool型和int型的1和0 没有任何关系。在C语言里当作为条件判断时,非 0 即为真,0 即为假,这是有差别的。而 Python 里 bool 型就有两个独立的常量,True和False。另外,它和int型的1和0 又有着千丝万缕的关系。

以上示例说明 bool 型的 True 本质和 int 型的 1 是一致的,False 的本质也和 0 一致。在某些编程语言中,只要大于0都算是True,在Python中也是这样的吗?


以上结果表明,bool型的True和False只和int型的1和0对应。可以直接把bool型的True和False当作一个1和0来使用。

另外,bool型也有一个内置函数“bool”,它可以将某个值转换成bool型的结果。
bool(obj):将对象“obj”转换成bool型。

注意:本质上“True”等同于1,“False”等同于0,但转换时就不限于1和0了。转换的原则是,把各种不同类型的特殊数据当作“False”来处理,非特殊数据当作“True”来处理。

前面介绍了一个特殊的对象“None”,即空对象,空对象是什么都没有,也把它当作“False”来处理。

各种数据类型的特殊值:数值 0 和 0.0、空字符串''、空列表[]、空元组()、空字典{}、空集合set()等也都当作“False”。