python - 为什么 Python 逻辑并不总是计算为 bool 值?

标签 python python-2.7 logical-operators

<分区>

在 Python 中,我非常习惯使用逻辑运算符 andor 并且我的印象是它们会简单地用左右值求值并且在运行时替换为 TrueFalse

我最近发现不是这样的。考虑:

>>> False or 10
10

我看到了用例。在这里,如果您有一个在失败时返回值或 False 的函数,则上述内容允许您拥有默认的回退值。但是使用:

>>> True and re.match("s", "s")
<_sre.SRE_Match object at 0x19f9098>

这让我感到困惑......似乎总是返回 and 评估的最后一个操作数,其中两个操作数都评估为 True ,这是有道理的,因为它是最后一个一个要运行,但我不明白为什么这比只用一个 bool 更可取。

python为什么要这样做? 有没有我没有看到的用例? 在您知道需要 bool 值的情况下,转换这些值是个好主意吗?例如:

>>> bool(True and re.match("s", "s"))
True

最佳答案

用 Python 文档的话来说:

This is sometimes useful, e.g., if s is a string that should be replaced by a default value

Boolean operations文档。

关于python - 为什么 Python 逻辑并不总是计算为 bool 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23764953/

相关文章:

python - 当使用不存在的小部件调用 find_element 方法时,Selenium Webdriver 卡住

google-app-engine - GAE 1.8.8更新后,不再显示来自Google Cloud Storage的图像

python - python中删除重复行

javascript - 如果负数不是一个因素,那么与零比较是否有可量化的好处?

python - 双击 PyQt4 QTableWidget 上的行将内容设置为 -1

python - 匹配数据帧之间的部分表达式

python - 在 pyspark 中,为什么 `limit` 后跟 `repartition` 创建完全相等的分区大小?

python - 获取除numpy数组的第一个和最后一个元素之外的所有元素

python - Pandas 中的元素逻辑或

c - 无限循环,c逻辑思维