在Python中,我非常习惯使用逻辑运算符and
和or
,并且认为他们只需使用左右值进行评估并替换为{{ <}>或True
在运行时。
我最近发现情况并非如此。考虑:
False
我看到了用例。如果你有一个函数在失败时返回一个值或>>> False or 10
10
,那么上面允许你有一个默认的回退值。但是False
:
and
这让我很困惑......看起来>>> True and re.match("s", "s")
<_sre.SRE_Match object at 0x19f9098>
评估的最后一个操作数,其中两个操作数都评估为and
总是返回,这是有意义的,因为它是最后一个但是我不知道为什么这比只有一个布尔更好。
为什么python这样做? 是否有一个用例,我没有看到? 在你知道你想要一个bool的情况下,转换这些值是个好主意吗?例如:
True