【发布时间】:2014-05-20 16:09:50
【问题描述】:
在 Python 中,我非常习惯于使用逻辑运算符 and 和 or,并认为它们会简单地用左右值进行评估,然后用 True 或 False 替换运行时。
我最近发现情况并非如此。考虑:
>>> False or 10
10
我看到了用例。在这里,如果您有一个返回值或 False 失败的函数,则上述允许您拥有默认的后备值。但是and:
>>> True and re.match("s", "s")
<_sre.SRE_Match object at 0x19f9098>
这让我感到困惑...似乎总是返回 and 评估的最后一个操作数,其中两个操作数都评估为 True,这很有意义,因为它是最后一个运行但我不明白为什么这比只有一个布尔值更好。
为什么python会这样做? 有没有我没有看到的用例? 在您知道自己想要一个布尔值的情况下,转换这些值是个好主意吗?例如:
>>> bool(True and re.match("s", "s"))
True
【问题讨论】:
-
因为
and和or运算符除了布尔逻辑之外还有其他用途。 -
关于你的最后一个问题,我认为我曾经使用过
bool,除了在解释器中检查某些不熟悉的类型是否为真。
标签: python python-2.7 logical-operators