表达式与语句
接下来,我们来正式学习一下表达式和语句的概念,并在Python解释器的交互模式中来检查它们的执行结果。
大家在高中阶段一定见过8 * 8
, a + b
, 7 - (x + y)
之类的数学表达式,
而程序表达式也是类似的,它们由数字(亦称为常数)、变量(如a
, x
等,用字母表示)、运算符(如加法、乘法符号等)等组成,
一些表达式还包含了函数,这在课上会讲到(不妨试着用数学里的“函数”概念去理解它)。
我们知道,如果表达式里面每个部分的值都是已知的(例如,a + b
中a
的值为4、b
的值为5),那么整个表达式就可以被求值。
让我们来看看Python里面的表达式和求值是什么样的。
1. 基本表达式
基本表达式(Primitive Expressions)只需要一步便可以求得它的值,例如整数、浮点数和布尔值:
>>> 3
3
>>> 12.5
12.5
>>> True
True
同学们可以像上面这样在交互模式下输入表达式,并按回车键查看结果。
浮点数是一种带小数点的数。之所以叫它浮点数,是因为它和计算机底层的表示有关。等大家上《计算机系统基础》这门课的时候就会理解了。
变量名同样也是基本表达式,求值的结果为在当前程序的状态下绑定到的值(更多内容见赋值语句)。
2. 布尔值与布尔表达式
布尔值只有两种值,True
和False
,表示逻辑上的“真”与“假”。
例如,我们知道数字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
注意,上面在交互模式下输入2021
和print(2021)
显示的结果看上去相同,但前者是交互模式下自动输出的每一行表达式的值,
后者是print()
在终端中的输出。在非交互模式下(即执行Python代码时,后面会讲),如果你想知道结果,请用print()
。