表达式与语句

接下来,我们来正式学习一下表达式和语句的概念,并在Python解释器的交互模式中来检查它们的执行结果。

大家在高中阶段一定见过8 * 8, a + b , 7 - (x + y)之类的数学表达式, 而程序表达式也是类似的,它们由数字(亦称为常数)、变量(如a, x等,用字母表示)、运算符(如加法、乘法符号等)等组成, 一些表达式还包含了函数,这在课上会讲到(不妨试着用数学里的“函数”概念去理解它)。 我们知道,如果表达式里面每个部分的值都是已知的(例如,a + ba的值为4、b的值为5),那么整个表达式就可以被求值。 让我们来看看Python里面的表达式和求值是什么样的。

1. 基本表达式

基本表达式(Primitive Expressions)只需要一步便可以求得它的值,例如整数、浮点数和布尔值:

>>> 3
3
>>> 12.5
12.5
>>> True
True

同学们可以像上面这样在交互模式下输入表达式,并按回车键查看结果。

浮点数是一种带小数点的数。之所以叫它浮点数,是因为它和计算机底层的表示有关。等大家上《计算机系统基础》这门课的时候就会理解了。

变量名同样也是基本表达式,求值的结果为在当前程序的状态下绑定到的值(更多内容见赋值语句)。

2. 布尔值与布尔表达式

布尔值只有两种值,TrueFalse,表示逻辑上的“真”与“假”。

例如,我们知道数字1是不等于2的,所以若在Python交互模式中输入1 == 2(这个表达式意思是“1等于2”,在Python中一般用==表示“相等”), 则会得到它的值为False;相反,如果输入1 != 2(表示”1不等于2“,在Python中一般用!=表示”不相等“),则会得到值True

这种能计算出布尔值的表达式我们称之为布尔表达式(Boolean Expression)。

>>> 1 == 2
False
>>> 1 != 2
True

3. 算术表达式

可以通过对数字和数学运算符的组合产生复杂的算术表达式(Arithmetic Expression)。 Python中常见的数学运算有+(加)、-(减)、*(乘)、**(乘方)和以下三种:

  • 浮点除法 (/):计算第一个数除以第二个数的结果,得到一个浮点数(即使能够整除)。
  • 下取整除法 (//):计算第一个数除以第二个数的下取整后的结果,得到一个整数。
  • 取模 (%):计算第一个数除以第二个数的余数(>0), 得到一个整数。
>>> 1 + 2
3
>>> 3 - 2
1
>>> 5 * 6
30
>>> 7 / 4
1.75
>>> 7 // 4
1
>>> 7 % 4
3
>>> 4**3
64

像大家平时学过的数学运算一样,算数操作也有优先级,比如乘方运算的优先级大于乘除运算,乘除运算的优先级大于加减运算。 同样地,你也可以通过“加括号”来改变求值优先级。注意,优先级不需要记忆。当你对运算优先级拿不准的时候,就多加括号!

>>> 2 + 6 / 4
3.5
>>> (2 + 6) / 4
2.0

4. 赋值语句

一个赋值语句(Assignment Statement)由一个变量名和一个表达式组成。它会在当前帧(帧的概念后续课程会讲)下把变量名与该表达式的值绑定。

>>> a = (100 + 50) // 2

注意:在Python中,不能对语句进行求值。

你可以输入一个之前定义过的变量名,例如a,Python解释器会输出其绑定到的值。如果你还记得之前的内容,a也是一个基本表达式:

>>> a
75

注意这里a被绑定到75, 而非(100 + 50) // 2 —— 变量名绑定到值而非表达式上。

5. print

print()是Python3的内置函数,它可以将一个表达式的值输出到终端上(如果还不清楚函数的概念,就单纯记忆一下它的用法吧)。 print(2021)也是一条语句:

>>> 2021
2021
>>> print(2021)
2021

注意,上面在交互模式下输入2021print(2021)显示的结果看上去相同,但前者是交互模式下自动输出的每一行表达式的值, 后者是print()在终端中的输出。在非交互模式下(即执行Python代码时,后面会讲),如果你想知道结果,请用print()