1.10 表达式

前面详细介绍了变量,变量是计算机语言中最基本的语言元素。使用运算符连接一个或多个变量就构成了表达式,例如给变量赋值,a=1是赋值表达式;求子集的运算,{1,2,3} <= {1,2,5}是比较运算表达式。如果变量是单词,表达式就是词组和短语。根据运算符的不同,可以有不同类型的表达式。

1.10.1 算术运算符

算术运算符连接一个或两个变量,构成算术运算表达式。常见的算术运算符有+、-、*、/等,如表1-12所示。表中还列出了各算术运算符的应用示例。

表1-12 算术运算符

“+”用于字符串、列表等时起连接的作用。例如:

“*”乘号用于字符串、列表等时起重复扩展的作用。例如:

1.10.2 关系运算符

关系运算符连接两个变量,构成关系运算表达式。当关系运算表达式成立时,返回True,否则返回False。常见的关系运算符如表1-13所示。表中还列出了各关系运算符的应用示例。

表1-13 关系运算符

注意:在对两个以上的变量进行关系运算时,可以用一个表达式进行描述。例如:

也可以对字符串、列表等进行关系运算,此时对参与运算的变量的值逐字符或逐元素进行比较,取第1次不同时的比较结果。

1.10.3 逻辑运算符

逻辑运算符连接一个或两个变量,构成逻辑运算表达式。常见的逻辑运算符如表1-14所示。其中还列出了说明和应用示例。

表1-14 逻辑运算符

1.10.4 赋值/成员/身份运算符

在前面各节介绍变量、字符串、列表等内容时,多次用到了赋值运算符和成员运算符。常见的赋值运算符如表1-15所示。其中还列出了说明和应用示例。

表1-15 赋值运算符

成员运算符用于判断所提供的值是否在或不在指定的序列中,如果是则返回True,否则返回False。常见的成员运算符有in和 not in,如表1-16所示。其中还列出了说明和应用示例。

表1-16 成员运算符

身份运算符用于比较对象的地址,判断两个变量是否引用同一个对象或不同的对象。如果是则返回True,否则返回False。常见的身份运算符有is和is not,如表1-17所示。其中还列出了说明和应用示例。

表1-17 身份运算符

1.10.5 运算符的优先级

前面介绍了算术运算符、关系运算符、逻辑运算符等各种运算符,如果一个表达式中有多种运算符,那么先算哪个后算哪个就要遵循一定的规则。这个规则就是先算优先级高的,后算优先级低的,如果各运算符的优先级相同,则按照从左到右的顺序计算。比如四则运算1+2*3-4/2,将加减法和乘除法放在一起进行计算,因为乘除法的优先级比加减法的优先级高,所以要先算乘除法,后算加减法。这是我们很熟悉的。表1-18中列出了各种主要的运算符及它们在表达式中的计算优先级。

表1-18 运算符的优先级

下面举几个例子来说明运算符优先级的应用。

对于下面四则运算的算术运算表达式,先算乘除法,后算加减法。

因为除法运算返回的结果是浮点型的,所以最后得到的结果也是浮点型的。如果希望先算1+2,将它们的和再乘以3,则可以用圆括号改变加法运算的优先级。如果圆括号有嵌套,则先算里面的。例如:

下面的表达式中有关系运算和逻辑运算,先进行关系运算,再进行逻辑运算。

在表达式中,关系运算表达式3>2返回True,关系运算表达式7<5返回False,最后计算逻辑运算表达式True and False,返回False。