2.1 数据类型

计算机能处理数值、文本、图形、音频、视频、网页等各种数据。不同的数据,需要定义不同的数据类型。数据类型是指根据数据描述信息的含义,将数据分为不同的种类。例如,人的年龄为25,用整数来表示;成绩78.5,用浮点数来表示;人的姓名如“比尔·盖茨”,用字符串来表示等。

Python 3中有六个标准的数据类型:Number(数值)、String(字符串)、List(列表)、Tuple(元组)、Sets(集合)、Dictionary(字典)。

2.1.1 数值

Python中数值有四种类型:整数、布尔型、浮点数和复数。

● 整数(int)。用于表示整数。例如:1、1024、-982。

● 布尔(bool)。用于表示布尔逻辑值。例如:True、False。

● 浮点数(float)。用于表示小数。例如:1.23,3.14,-9.01等。之所以称为浮点数,是因为按照科学计数法表示,浮点数的小数点位置可变。例如,52.3E4就是科学计数法,其中,E表示10的幂,52.3E4表示52.3*10^4。52.3E4和5.23E5表示同一数字,只是它们的小数点位置不同。

● 复数(complex)。用于表示复数。例如:1+2j、1.1+2.2j。

【例2-1】 数值举例。

关于数字的计算,往往会用上如表2-1所示的数学函数。

表2-1 数学函数

(续)

2.1.2 字符串

网页中汉字往往会显示为?????或者乱码,这是因为字符编码方式不同所引起的。字符编码有ASCII、UTF-8、Unicode、GB2312等。

(1)ASCII编码

在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,8个二进制位就可以组合出256种状态,称为一个字节(byte)。20世纪60年代,美国制定了ASCII编码,将英文字符与二进制之间的关系进行了规定,对0~9的10个数字、26个大小写字英文字母及一些其他符号进行了编码。

(2)GB2312编码

汉字多达10万个左右,而ASCII编码只能表示256种符号,远远不够,因此简体中文使用GB2312编码方式,使用两个字节表示一个汉字。

(3)Unicode编码

Unicode编码将所有语言都统一到一套编码里,解决了乱码问题。Unicode的学名是“Universal Multiple-Octet Coded Character Set”,简称为UCS。UCS可以看作是“Unicode Character Set”的缩写。Unicode又称为抽象编码,只是一个符号集,规定了符号的二进制代码,并没有规定这个二进制代码应该如何存储和如何传输。传输编码是由UTF(UCS Transformation Format)规范规定,常见的UTF规范包括UTF-8、UTF-16。

(4)UTF编码

浏览网页的源码上会有类似<meta charset="UTF-8" />的信息,表示该网页为UTF-8编码。UTF-8作为互联网上使用最广的Unicode编码的实现方式之一,以8位(1字节)表示英文,以24位(3字节)表示中文及其他语言。

【例2-2】 字符编码举例。

字符编码举例如表2-2所示。

表2-2 字符编码举例

字符串在Python中是以单引号、双引号或三引号括起来的符号来表示,例如'Hello World'、"Python is groovy"、"""What is footnote 5?"""等。请注意,''或""本身只是一种表示方式,不是字符串的一部分。因此,字符串'abc'只有a,b,c这3个字符。用单引号或双引号括起来没有任何区别,但是一个字符串用什么引号开头,就必须用什么引号结尾。

单引号与双引号只能创建单行字符串。

为了创建多行字符串或者使得字符串的数据中出现双引号,则出现了三引号。

除了以上形式的字符数据外,对于常用的但却难以用一般形式表示的不可显示字符,Python语言提供了一种特殊形式的字符常量,即用一个转义标识符“\”(反斜线)开头的字符序列,如表2-3所示。

表2-3 转义字符及其含义

【例2-3】 转义字符举例。

在print()函数中,首先遇到第一个“\t”,它的作用是让光标移到下一个制表位置,即光标往后移动8个单元,到第9列,然后在第9列输出变量a的值1。接着遇到“\n”,表示回车换行,光标到下行首列的位置,连续输出变量b和c的值2和A,其中使用了转义字符常量'\101'给变量c赋值。遇到“\n”,光标移到第3列的首列,输出变量a的值1和b的值2,再遇到“\t”光标移到下一个制表位,输出变量c的值A。