Python有两类相关的、令人困惑的运算符:
- 逻辑运算符
- 位操作符
如果你想使用逻辑和运算符,那么就使用and,对于逻辑或运算符,就使用or,而逻辑非运算符,就使用not。在Python中,&和|是位操作符,所以不要混淆这些运算符。
Python中的和
要在Python中使用and运算符,使用关键字and而不是**&&** ,因为Python中没有**&&运算符**。如果你在Python中使用&&运算符,你会得到SyntaxError。同样,||和!也不是有效的Python操作符。所以请使用or 和not 操作符。
逻辑运算符表
| 操作符 (其他语言) | 与Python相当的操作符 |
| && | 和 |
| || | 或 |
| ! | 不是 |
另外,逻辑运算符在Python中还有位数/二进制运算符:
| 逻辑运算符 | 比特运算符 |
| 和 | & |
| 或 | | |
逻辑运算符的优点是它们是短路的。这意味着如果第一个操作数已经定义了结果,那么第二个操作数就根本不会被评估。
正如我们所知, and是Python中的逻辑 和运算符,如果操作数都是真,则返回真:
x = 19
y = 21
print(x and y)
输出
21
我们得到21,因为'and'测试两个表达式在逻辑上是否为真。
这里,编译器检查语句是真 还是假。然而,如果第一条语句是假的,它就不检查第二条语句,而是立即返回假的。这就是所谓的"懒惰评估"。
如果第一条语句是"真",则检查第二条条件,并根据AND操作的规则。
只有当两个语句都是"真 "时,结果才是 "真"。
Python中的&(Bitwise)
&是Python中的一个位操作符,它作用于位,进行逐位操作:
x = 19
y = 21
print(x & y)
输出
17
&'对两个语句的结果进行顺时针和操作。
这就是Python中的和。