python3【基础】-and和or的短路逻辑
1. 表达式只有一个逻辑运算符
python中哪些对象会被当成False,哪些又是True呢?
- 基本数据类型中的None、任何数值类型中的0、空字符串"",空列表[],空元组()和空字典{}。
- 自定义类型,如果实现了__nozero__() 或 __len__() 方法返回0或False,则其实例也被当作False
- 除了上述两种,其它的都会被当作True
最简单的逻辑运算:
True and True ==> True True or True ==> True True and False ==> False True or False ==> True False and True ==> False False or True ==> True False and False ==> False False or False ==> False
当逻辑运算表达式中含有False对象时,逻辑运算后会返回False类型本身,例如:
1 >>> a = [0, 1, '' ,3] 2 >>> a[0] and a[1] 3 0
>>> a = [0, 1, '' ,3] >>> a[2] and a[1] ''
两个同时为False,返回左边的值。
2. 表达式中包含两个即两个以上的逻辑运算符
逻辑运算符and或or一旦不止一个,其运算规则的核心思想就是短路逻辑。
- 表达式从左至右计算,若or的左侧逻辑值为True,则短路or后所有的表达式(不管是and还是or,直接输出or左侧表达式)。
- 表达式从左至右计算,若and的左侧逻辑值为False,则短路其后所有and表达式,直到有or出现,输出and左侧表达式到or的左侧,参与接下来的逻辑运算。
- 若or的左侧为False,或者and的左侧为True,则不能使用短路逻辑。
具体内容可见:https://www.cnblogs.com/an9wer/p/5475551.html分析