课时36:非布尔值的逻辑运算符
摘要:本文主要围绕Python中对非布尔值进行与或运算的情况展开,详细介绍了其运算规则,并通过实例演示加深理解,随后引入了最后一种运算符——条件运算符(三元运算符),即将对其语法进行讲解。
1.非布尔值的与运算
2.非布尔值与运算规则总结
3.非布尔值的或运算
4.非布尔值或运算规则总结
5.条件运算符(三元运算符)介绍
01、 非布尔值的与运算
对于非布尔值进行与或运算时会出现什么情况?
演示一下它的特点,直接在当前环境下进行。
非布尔值的与或运算,非运算就是直接取反,比较简单。重点来看看与或运算。比如说写一个`result=1 and 2`
,这个`result`应该是多少?1和2做与运算,结果会是什么?
当我们对非布尔值进行与或运算时,Python会把它们当做布尔值来运算,但最终返回的是原值,而不是`True`或`False`。就像`1and2`,Python执行代码的时候,会把1和2当成布尔值,1和2都不是空值,那就相当于`True and True`
了。这里问题就来了,`True and True`
按道理应该返回`True`,但实际上它不会返回`True`,而是返回原值。1和2都是`True`对应的非布尔值,那到底返回1还是2?运行后结果是2。
`result=1 and 0`
,这就相当于`True and False`
。与运算是找`False`的,有`False`就返回`False`,应该返回0,运行一下,果然是0。
再看`result=0 and 1`
,0就是`False`,按照规则,`Falseand`后面不管是什么,都直接返回第一个值0,运行后结果也确实是0。
还有`result=0 and None`
,这就相当于`False and False`,这种情况肯定返回0,因为已经找到`False`了,第二个值就不用看了,保存并运行,结果就是0。
学习新东西的时候,先把各种情况找出来,再归纳总结规律。
02、 非布尔值与运算规则总结
来分析一下规律。当第一个值是`True`对应的非布尔值(比如1、2这些非零值)的时候,像`1 and 2`
返回的是第二个值2;当第一个值是`False`对应的非布尔值(比如0)的时候,就直接返回第一个值。
其实与运算的规则就是找`False`。如果第一个值是`False`,就不用看第二个值了,直接返回第一个值。要是第一个值是`True`,那就一定要看第二个值,不管第二个值是`True`还是`False`,都会直接返回第二个值。这就是所谓的短路规则。再看`1 and 0`,第一个是True,第二个是0,其实第二个无论是什么,他都会返回,因为第一个已经是True了,他返回不了,找False。
简单总结一下,就是如果第一个值是`False`,则直接返回第一个值;否则返回第二个值。这个规则不仅适用于非布尔值的与运算,对布尔值的与运算也同样适用。大家体会一下,虽然实际中做非布尔值的这种运算相对较少,但还是需要了解的。
03、 非布尔值的或运算
或运算的规则。或运算是找`True`的。规则是如果第一个值是`True`,就不看第二个值了。它和与运算的规则正相反。如果第一个值是`True`,则直接返回第一个值;否则返回第二个值。
演示一下。`result=1 or 2`
,这相当于`True or True`
,第一个值已经是`True`了,按照规则就不用看第二个值了,所以结果肯定是1,运行一下,确实是1。
再看`result=1 o r0`
,也就是`True or False`
,同样,第一个值是`True`,直接返回第一个值1。
`result=0 or 1`
,这是`False or True`
,第一个值是`False`,那就得看第二个值,所以最终结果返回第二个值1。
还有`result=0 or None`
,`False or False`
,第一个值是`False`,第二个值不管是什么都得返回,所以结果就是`None`。运行一下,结果确实是`None`。
04、 非布尔值或运算规则总结
总结一下非布尔值或运算的规则:当对非布尔值进行逻辑或运算时,Python同样会将其当做布尔值运算,最终返回原值。如果第一个值是`True`对应的非布尔值,就直接返回第一个值;如果第一个值是`False`对应的非布尔值,就返回第二个值。大家把与或运算的这几个规则都记住。