Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

2.4 数据类型

计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。

但是,计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种各样的数据,不同的数据,需要定义不同的数据类型。在Python中,能够直接处理的数据类型有以下几种:

(一)整数

Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1100-80800,等等。

计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x前缀和0-9,a-f表示,例如:0xff000xa5b4c3d2,等等。

对于很大的数,例如10000000000,很难数清楚0的个数。Python允许在数字中间以_分隔,因此,写成10_000_000_00010000000000是完全一样的。十六进制数也可以写成0xa1b2_c3d4

(二)浮点数

浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23×1091.23\times10^912.3×10812.3\times10^8 是完全相等的。

浮点数可以用数学写法,如1.233.14-9.01,等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23×1091.23\times10^9就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。

整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的,而浮点数运算则可能会有四舍五入的误差。

(三)字符串

字符串是以单引号'或双引号"括起来的任意文本,比如'abc'"xyz"等等。请注意,''""本身只是一种表示方式,不是字符串的一部分,因此,字符串'abc'只有abc这3个字符。如果'本身也是一个字符,那就可以用""括起来,比如"I'm OK"包含的字符是I'm,空格,OK这6个字符。

如果需要拼接字符串,可以使用+号,例如拼接’abc’和’xyz’这两个字符串:

'abc' + 'xyz'
'abcxyz'

练习:拼接字符串

请拼接如下三个字符串:‘123’, ‘456’, '789’为一个字符串。



(四)布尔类型

布尔类型(Boolean type)是 Python 中一种基本数据类型,用于表示真或假。布尔类型的变量只能取两个值:True 或 False。布尔类型主要应用在运算符与表达式中。

运算符与表达式

运算符包括算术运算符、关系运算符、逻辑运算符、赋值运算符欧等等。
我们先来看看逻辑运算符:and、or和not,逻辑运算符的操作数是逻辑值True(真)和False(假)。not属于一元运算符,只有一个操作数;or和and属于二元运算符,有两个操作数。

表 逻辑运算符的运算法则

操作数X操作数YX and YX or Ynot X
TrueTrueTrueTrueFalse
TrueFalseFalseTrueFalse
FalseTrueFalseTrueTrue
FalseFalseFalseFalseTrue

表达式是由变量、对象、方法调用和操作符等元素组成的式子。例如a+b, a>b, a and b都为表达式。

当表达式出现多个运算符时,Python将按照运算符的优先次序从高到低进行计算

运算符的优先次序

运算符描述(优先次序从高到低)
**幂运算
~, + , -按位翻转,正号,负号
*, /, %, //乘、除、取模和取整除
+, -加法、减法
>>, <<右移
&,位与
^, |位运算符
<,<=,>,>=,!=,==比较运算符
is, is not身份运算符
in, not in成员运算符
not, or, and逻辑运算符

练习:运算符的优先级

以下表达式的运行结果是多少?

  • 1 + 2**2

  • (5 + 2) * 3 // 4

  • 2>1 and 3<2

  • not 2>1

  • 2 == 2

  • 3 != 2

  • a = True; (a is False) or (a is not True) or (a is not False)

  • a = [1,2,3,4,5,6]; not (3 not in a)

  • a=[2+2**4,3+2**1,4+1**5,4];((not(5 not in a) and (10 in a)) is False) == (not(5 not in a) and (10 in a) is False)

对于上面不确定表达式,可以粘贴在下方并运行。