<分区>
在 Python 中,我非常习惯使用逻辑运算符 and
和 or
并且我的印象是它们会简单地用左右值求值并且在运行时替换为 True
或 False
。
我最近发现不是这样的。考虑:
>>> 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