摘要:上一篇Python从入门到放弃-运算符(1),讲了Python的运算符中的算术运算符、赋值运算符、比较(关系)运算符,这篇继续讲Python的运算符。
逻辑运算符
逻辑运算符是对真和假两种布尔值进行运算,运算后的结果仍是一个布尔值,Python中的逻辑运算符主要包括and(逻辑与),or(逻辑或),not(逻辑非)。下表是逻辑运算符的用法和说明。
运算符 | 含义 | 用法 | 结合方向 |
and | 逻辑与 | op1 and op2 | 从左到右 |
or | 逻辑或 | op1 or op2 | 从左到右 |
not | 逻辑非 | not op | 从右到左 |
使用逻辑运算符进行逻辑运算时,其运算结果如下:
表达式1 | 表达式2 | 表达式1 and 表达式2 | 表达式1 or 表达式2 | not 表达式1 |
True | True | True | True | False |
True | False | False | True | False |
False | False | False | False | True |
False | True | False | True | True |
位运算符
位运算符是把数字看做二进制来进行计算的,因为,需要先将要执行运算的数据转换成为二进制,然后才能执行运算。Python中的位运算符有位与(&)、位或(|)、位异或(^)、取反(~)、左移位(<>)运算符。
- “位与”运算
“位与”运算的运算符为“&”,“位与”运算的运算符法则是:两个操作数据的二进制表示,只有对应位都是1时,结果才是1,否则为0。如果两个操作数的精度不同,则结果的精度与精度高的操作数相同,如下图所示,60&13 = 12
- “位或”运算
“位或”运算的运算符为“|”,“位或”运算的运算符法则是:两个操作数据的二进制表示,只有对应位都是0时,结果才是0,否则为1。如果两个操作数的精度不同,则结果的精度与精度高的操作数相同,如下图所示,60|13 = 61
- “位异或”运算
“位异或”运算的运算符为“^”,“位异或”运算的运算符法则是:两个操作数据的二进制表示相同时(同时为0或同时为1),结果为0,否则为1。如果两个操作数的精度不同,则结果的精度与精度高的操作数相同,如下图所示,60^13 = 49
- “位取反”运算
“位取反”运算也称为“位非”运算,运算符为“~”,“位取反”运算运算就是将操作数中对应的二进制数1修改为0,0修改为1,如下图所示,
- “左移位”运算
“左移位”运算符<
- “右移位”运算
“右移位”运算符>>是将一个二进制操作数向右移动指定的位数,右边(低位端)溢出的位被丢弃,而在填充左边(高位端)的空位时,如果最高位是0(正数),左侧空位补零;如果最高位是1(负数),左侧空位填入1。右移位运算相当于除以2的n次幂。例如:a = 240,右移一位的值是120,右移两位的值是60。如下图所示:
成员运算符
除了以上的一些运算符之外,Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。在Python中常见的成员运算符如下:
运算符 | 描述 | 实例 |
in | 如果在指定的序列中找到值返回 True,否则返回 False。 | x 在 y 序列中 , 如果 x 在 y 序列中返回 True。 |
not in | 如果在指定的序列中没有找到值返回 True,否则返回 False。 | x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True |
如下所示,演示了成员运算符的操作:
运算符优先级
所谓运算符优先级,就是先计算哪个,后计算哪个。与数学的四则运算应该遵守的“先乘除后加减”是一个道理。Python运算符的运算规则是:先进行优先级高的运算,后进行优先级低的运算,同一级优先级的从左到右计算,有括号的先进行括号运算。下表是优先级从高到底排列。
运算符 | 说明 |
** | 幂 |
~、+、- | 取反、正号、负号 |
*、/、%、// | 算术运算符 |
+、- | 算术运算符 |
<> | 位运算符中的左移和右移 |
& | 位运算符中的位与 |
^ | 位运算符中的位异或 |
| | 位运算符中的位或 |
、>=、!=、== | 比较运算符 |
在编写代码时尽量使用括号 “()” 来限定运算次序,以免运算次序发生错误。
总结
- 具体介绍了逻辑运算符、位运算符和成员运算符。
- 介绍了Python运算符的优先级,在在编写代码时尽量使用括号 “()” 来限定运算次序,以免运算次序发生错误。
end