2.6 【小白也要懂】运算符详解

数学中有很多运算符,与之类似的是程序设计中也有很多运算符。运算符就像是家具上的螺钉,它可以把各种独立的零件连接起来,从而得到一个完整的产品。

我们已经知道布尔类型只有两个值:True和False,数学上与之对应的是1和0,下面就用这个来举例子。

1.比较运算符

顾名思义,比较运算符就是用来比较数值的大小。如果比较式成立,返回True;不成立,则返回False。在这里引入一个新名词:布尔表达式,即能够返回布尔值的表达式称为布尔表达式。

例2-38 布尔表达式

表2-3罗列了所有的比较运算符组合,当仅对值进行简单比较时建议使用==和!=操作符。这些比较运算符和大多数的数学比较符号用法类似,比如“>”就是大于号的意思、“<”就是小于号的意思。

表2-3 常用比较运算符

涉及数值之间的比较,建议使用比较运算符,但是比较运算符==和!=有时候也适用于字符串类型。

2.逻辑运算符

要实现一个复杂的功能程序,逻辑运算是必不可少的。可以这么理解,逻辑运算符就是数学中的且、或、否等操作符,分别对应的关键字是and、not、or。在表2-4中,and、or和not的优先级是not>and>or。逻辑操作符and和or也称作短路操作符或者惰性求值。参数从左向右解析,一旦结果可以确定就停止。例如,如果A和C为真而B为假,则A and B and C不会解析C。作用于一个普通的非逻辑值时,短路操作符的返回值通常是最后一个变量。

表2-4 逻辑运算符

逻辑运算符返回的结果不一定是布尔值,除非输入的操作数据是布尔值。其次,and、or和not的优先级是not>and>or。

例2-39 逻辑运算的返回值

虽然逻辑运算符返回的结果不一定是布尔值,但是若涉及布尔值True或False的判断,建议使用not,不要用比较运算符直接与True或False比较。

3.位运算符

位运算符就是对目标数据进行二进制操作。它在执行的时候,首先会把对应的操作数转换成相应的二进制数,然后再对二进制数进行位运算。大部分人并不熟悉二进制运算的规则,但是在某些领域,位运算使用得当,往往会有出其不意的效果。

例2-40 位运算

意思是先把数值10赋予变量a,换算成二进制就是1010。然后经过位运算符“<<”处理,各个二进制数字全部左移两位,高位丢弃,低位补充0,于是就变成了101000,最后转化成十进制输出的40。位运算写出来的代码比较难以转换为现实的逻辑,代码很难理解,一般需要配置注释说明。

4.成员运算符

成员运算符就是用来判断元素是否为某个元素集合的一员的运算符。通常的做法是,判断某个数字或者某个字符串后是位于某个列表或者其他数据类型里面的一员。

成员运算符包括in和not in。in用于判断某元素是否包含在某个集合里面,not in用于判断某元素是否不包含在某个集合里面。

例2-41 成员运算符

掌握运算符后,我们应该结合之前学到的数据类型用法,多做一些代码练习,这样才能融会贯通。

小白逆袭: 三目运算符

有个特殊的运算符叫三元运算符,写成表达式为x if C else y。表达式首先评估条件C(不是x);如果C为真,则计算x并返回其值;否则,评估y并返回其值。三元运算符具有所有Python 操作的最低优先级。举个例子,如果a>b则返回a,否则返回b,即取a和b中最大值。三元运算符表达式为h = a if a>b else b。