python - 为什么 Python 中没有 "and"和 "or"运算符?

标签 python operators language-design boolean keyword

我不知道这一点,但显然 andor 关键字不是运算符。它们没有出现在 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/

相关文章:

python - 排序列表的元素包含称呼吗?

c++ - 重载箭头 ( -> ) 运算符 C++ 的问题

c# - 帮助解决 C# 中的隐式运算符重载

php - AND、OR 输出错误结果

.net - 在 C++/CLI 中实现常量引用的最佳实践

pseudocode - 伪代码有正式的高级表示法吗?

Python按给定顺序将多个文件 append 到一个大文件

python - 如何将 *.RDS 文件转换为 *.FEATHER 文件?

python - 获取最后创建的项目选择

c++ - 在子类型上调用函数是如何实现的?