群里看到有人简单讲解了python条件判断的or和and判断,非常有意思,mark一下
问题描述:
a = 10 or 20 a = 10 and 20 a = 0 or 30 a = 30 or 0 a = 0 and 30 a = 30 and 0
你是否知道每一个a的准确结果?
你做对了么?
群里大佬的解读:
and的作用,两侧中含0,返回0; 均为非0时,返回后一个值
or的作用,两侧中至少有一个非0时,返回第一个非0
所以从用法上来说and和or与if有着本质上的区别,if是判断后面一个代码块是否为真,而and和or是综合判断两个代码块。
我的理解:
两侧代码块没有0 | 两侧代码块有0 | |
or | 取左侧代码块的值 | 非0 |
and | 取右侧代码块的值 | 取0 |
知乎上有个解释清晰明了:
“短路原则”:
1. or左边代码块只要返回了真值,就会终止对右边代码块取值,直接返回左边代码块的值
2. and是左右两侧代码块均返回了真值,返回的是右边代码块的值。如果两侧有一边为假值,则只会返回假值