Python 提供一整套布尔比较和逻辑运算,详细信息请分别参见下表:
表 1. Python 中的布尔比较运算符
运算符 | 描述 | 示例 |
---|---|---|
< | 小于 | i < 100 |
<= | 小于等于 | i <= 100 |
> | 大于 | i > 100 |
>= | 大于等于 | i >= 100 |
== | 相等 | i == 100 |
!= | 不相等(另外使用 <>) | i != 100 |
补充一点,表 1 中列出的运算符优先级都一样,除非将表达式置于括号中,否则按从左到右的顺序应用。
表 2. Python 中的逻辑运算符
运算符 | 描述 | 示例 |
---|---|---|
not | 逻辑非 | not b |
and | 逻辑与 | (i <= 100) and (b == True) |
or | 逻辑或 | (i < 100) or (f > 100.1) |
逻辑运算符的优先级低于单独的比较运算符,这一点意义重大,因为必须先计算比较运算符,然后才能计算逻辑运算符。逻辑运算符的实际优先级就是表 2 中罗列这些运算符的顺序。
在 Python 中,关于 or
和 and
逻辑运算符有意思的是,它们都是快捷运算符。简言之,如果给定表达式 x
or y
,则仅当 x
为 False
时才会计算 y
。同样地,如果给定表达式 x
and y
,则仅当 x
为 True
时,才会计算 y
。此功能可以增强表达式求值的性能(尤其是针对长的或复杂的表达式),然而对于习惯于从其他语言学来的不同规则的程序员而言,则容易犯错。
表 3. Python 中的算术运算
运算符 | 描述 | 示例 |
---|---|---|
* | 乘 | i * 100 |
/ | 除 | i / 100 |
// | 整除 | i // 100 |
% | 取余 | f % 100 |
+ | 加 | i + 100 |
- | 减 | i - 100 |
乘法和除法运算符(表 3 中列出的前四个)具有高于加法和减法的优先级。如前所述,您可以通过使用括号分组子表达式,将其分离出来以提高优先级。
表 4. Python 中的位运算
运算符 | 描述 | 示例 |
---|---|---|
~ | 按位求补 | ~b |
<< | 向左位移 | b << 1 |
>> | 向右位移 | b >> 1 |
& | 按位和 | b & 0x01 |
^ | 按位异或 | b ^ 0x01 |
| | 按位或 | b | 0x01 |