我不知道这一点,但显然 and
和 or
关键字不是运算符。它们没有出现在 list of python operators 中.纯粹出于好奇,这是为什么呢?如果他们不是运营商,他们到底是什么?
最佳答案
因为它们是控制流构造。具体来说:
- 如果
and
的左参数计算结果为 False,则根本不会计算右参数 - 如果
or
的左参数计算结果为 True,则根本不会计算右参数
因此,这不仅仅是保留字的问题。它们的行为不像运算符,因为运算符总是计算所有参数。
您可以将此与按位二进制运算符进行对比,顾名思义,是运算符:
>>> 1 | (1/0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
>>> 1 or (1/0)
1
如您所见,按位 OR (|
) 会计算其两个参数。然而,or
关键字在左参数的计算结果为 True 时根本不计算其右参数。这就是为什么在第二个语句中没有引发 ZeroDivisionError
的原因。
关于python - 为什么 Python 中没有 "and"和 "or"运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2017230/