
2.1 Python数据类型
计算机程序可以处理各种数值,除此之外,还可以处理文本、图形、音频、视频、网页等各种各样的数据。不同的数据需要定义不同的数据类型。

数据类型
2.1.1 数值类型
Python数值类型用于存储数值。Python支持以下数值类型:
(1)整型(int):通常是整数,不带小数点,但可以有正号或负号。Python 3.5对整型是没有大小限制的,只要内存许可,整数的取值范围几乎包括了全部整数(无限大),这给大数据的计算带来便利。在Python 3.5中,只有一种整数类型int,没有Python 2.7中的long。
(2)浮点型(float):由整数部分与小数部分组成,也可以使用科学计数法表示,如2.78e2就是2.78×102=278。
(3)复数(complex):由实数部分和虚数部分构成,可以用a+bj或者complex(a,b)表示。复数的虚部以字母j或J结尾,如2+3j。
数据类型是不允许改变的,这就意味着如果改变数值数据类型的值,将重新分配内存空间。
2.1.2 字符串
字符串是Python中最常用的数据类型,可以使用引号来创建字符串。Python不支持字符类型,单字符在Python中也作为一个字符串使用。Python中使用单引号和双引号表示字符串的效果是一样的。
1.创建和访问字符串
创建字符串很简单,只要为变量分配一个值即可。例如:

Python访问子字符串,可以使用方括号来截取字符串。例如:

程序运行结果:

说明:切片是字符串(或序列等)后跟一个方括号,方括号中有一对可选的数字,并用冒号分隔,如[1:5]。切片操作中的第一个数(冒号之前)表示切片开始位置,第二个数(冒号之后)表示切片结束位置。
切片操作中如果不指定第一个数,Python就从字符串(或序列等)首开始。如果没有指定第二个数,则Python会停止在字符串(或序列等)尾。注意:返回的切片内容从开始位置开始,在结束位置之前结束。例如,[1:5]取第2个字符到第6个字符之前(第5个字符)的内容。
2.转义字符
需要在字符中使用特殊字符时,Python用反斜杠(\)转义字符,如表2-1所示。
表2-1 转义字符

3.字符串运算符
Python字符串运算符如表2-2所示。实例中变量a值为字符串"Hello",变量b值为字符串"Python"。
表2-2 Python字符串运算符

4.字符串格式化
Python支持格式化字符串的输出。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到有字符串格式符的模板中。
在Python中,字符串格式化使用与C语言中printf()函数类似的语法。例如:

Python用一个元组将多个值传递给模板,每个值对应一个字符串格式符。上例将'xmj'插入到%s处,41插入到%d处。所以输出结果为:

Python字符串格式化符号及其描述如表2-3所示。
表2-3 Python字符串格式化符号及其描述

字符串格式化举例:

程序运行结果:

2.1.3 布尔类型
Python支持布尔类型的数据,布尔类型只有True和False两种值,但是布尔类型有以下几种运算:
(1)and(与运算):只有两个布尔值都为True时,计算结果才为True。

(2)or(或运算):只要有一个布尔值为True,计算结果就是True。

(3)not(非运算):把True变为False,或者把False变为True。

布尔运算在计算机中用来做条件判断,根据计算结果为True或者False,计算机可以自动执行不同的后续代码。
在Python中,布尔类型还可以与其他数据类型做and、or和not运算,这时下面几种情况会被认为是False:为0的数字,包括0、0.0;空字符串' '、"";表示空值的None;空集合,包括空元组()、空序列[]、空字典{};其他的值都为True。例如:

2.1.4 空值
空值是Python中一个特殊的值,用None表示。它不支持任何运算,也没有任何内置函数方法。None和任何其他的数据类型比较永远返回False。在Python中未指定返回值的函数会自动返回None。
2.1.5 Python类型转换
Python类型转换函数及其描述如表2-4所示。
表2-4 类型转换函数及其描述

续表

例如:
