python中的逻辑判断与或非和其他语言的逻辑判断结果有一点不同,这一不小心就让中了招,有时候迷惑为什么结果与预测的结果大相径庭,既然是吃饭的手段,还是要认真的专研一下,以免出去让人看了笑话。
先来一组对比:
java中的逻辑运算:
可见java中的逻辑运算只可以用于条件之间的判断,如果逻辑运算符的前后不是条件表达式,则会报错,如下图无法通过语法检测,且逻辑运算的结果为true或者false,是一个Boolean值
python中的逻辑运算
python就比java要花里胡哨了,首先符号就不相同
| 一般逻辑符号 | python中的逻辑符号 |
|---|---|
| && | and |
| || | or |
| ! | not |
这里展示一下python中逻辑运算符号运用
| 逻辑运算表达式 | 结果展示 |
|---|---|
| 逻辑与运算: | |
| 3>2 and 3>1 | True |
| 3 and 2 | 2 |
| 3>2 and 3>1 and 2 | 2 |
| 3 and 2>3 | False |
| 0 and None | 0 |
| 逻辑或运算: | |
| 3>2 or 3>1 | True |
| 3>2 or 2 | True |
| 2 or 3>2 | 2 |
| 3 or 4 | 3 |
| 0 or None | None |
| 逻辑非运算 | |
| not 3 | False |
| not 0 | True |
从上面表可以看出:python的逻辑运算可以同时运算条件表达式和值
(1)and: 结果为真时,返回最右边的表达式,如果最右边为条件表达式,则返回True,如果右边为值时,返回值。
结果为假时,返回第一个假,如果第一个假中是条件表达式,则返回False,如果是值,返回值
(2)or :返回遇到的第一个真值,如果是条件表达式,返回True,如果是值,返回值。
如果两边都是假,则返回最后一个假,如果是条件表达式,返回False,如果是值,返回值。
总之:
(1)and的返回结果:从左到右,如果结果为真,返回最后一个真;如果结果为假,返回第一个假
(2)or的返回结果:从左到右,如果结果为真,返回遇到的第一个真值;如果结果为假,返回最后一个假值
python中为False的一些值:
(1)一切0:0,0.0,0.000
(2)空值:[],{},()
(3)None
以上这些是值类型,并不是条件表达式,所以虽然结果为False,但是返回为其本身,即返回值
例如:
| 逻辑运算 | 结果 |
|---|---|
| 0 or [ ] | [ ] |
| 0 and [ ] | 0 |
| 0 or None | None |
并不是返回False,没少在这上面踩坑,我都服了,原以为这不过是一个简单的知识点,没想到里面还大有文章,从了以前学java的惯性思维了。
学习是不能自满的,天下难事比起于易。