为什么Python逻辑并不总是评估为bool?

时间:2014-05-20 16:09:51

标签: python python-2.7 logical-operators

在Python中,我非常习惯使用逻辑运算符andor,并且认为他们只需使用左右值进行评估并替换为{{ <}>或True在运行时。

我最近发现情况并非如此。考虑:

False

我看到了用例。如果你有一个函数在失败时返回一个值或>>> False or 10 10 ,那么上面允许你有一个默认的回退值。但是False

and

这让我很困惑......看起来>>> True and re.match("s", "s") <_sre.SRE_Match object at 0x19f9098> 评估的最后一个操作数,其中两个操作数都评估为and总是返回,这是有意义的,因为它是最后一个但是我不知道为什么这比只有一个布尔更好。

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

True

1 个答案:

答案 0 :(得分:-1)

用Python doc的话来说:

  

这有时很有用,例如,如果s是应该是的字符串   替换为默认值

Boolean operations doc。