Python中and和or的用法

Python09

Python中and和or的用法,第1张

之前一直以为and和or都是用来进行布尔判断的,不过在 Learn Python the hard way 一书的Boolean Practice一节中看到了一个Common Question:

这引起了我的好奇,它们返回的可以是其它类型的值么?

于是我查了下相关的文档,发现and和or的运算规律是这样的:

在Python中,0,"",[],(),{},None,False为假值,其余为真值。

因此按照运算过程来看,这两个运算符返回的就不止True和False两个选项了。

那平常理解的作为判断条件的and和or是怎么回事呢?(例如(a == 3) and (b == 5))

这是因为此时and和or里面只有True和False,那么按照运算规律的话结果也就只有True和False两个选项了。

为了加深理解,举几个栗子:

看完and和or的运算规则之后,可能我们会有一个问题, 如果要对两个数进行位运算那应该如何操作呢?

其实只要用运算符&,|,^之类的就可以了。

放上栗子

这样就能比较好的理解啦

Python中的and和or表达式不同于其他常见语言中的逻辑表达式,由于Python中的if语句可以对所有表达式进行判断,因此被and和or运算符作用的前后两个表达式可以是任意表达式。

and和or表达式的求值原则:根据短路求值,返回最终确定表达式的值的被作用表达式的值。对于 a and b ,如果 (if a)==False 则表达式返回a的值,否则一定返回b的值。对于 a or b ,如果 (if a)==True 则表达式返回a的值,否则一定返回b的值。