刚才看到一个很有意思的问题,就是关于and和or的优先级运算,因为平时我自己使用and和or的时候基本都是需要返回的布尔值,印象中需要返回其中一个值的时候基本上都是使用三元表达式,所以对and or的优先级比较就不太明了,最多也就知道短路。

  在知乎上看到一个非常简洁明了直观的回答

其一, 在不加括号时候, and优先级大于or

其二, x or y 的值只可能是x或y. x为真就是x, x为假就是y

其三, x and y 的值只可能是x或y. x为真就是y, x为假就是x

好了,接下来我们算一下

0 and 2 or 4 or 1 and 5

按照以上逻辑,计算步骤可以分为以下几步

计算and:0 or 4 or 5

逐步计算or,结果是:4

打开编译器测试以下,没毛病!

另注,我平时测试使用的是ipython,比自带的IDLE好用太多了,强烈建议还没装的装一个~