Python 随笔:与and、或or、非not逻辑运算巧用
1. 基础知识
python中的逻辑运算符:
- and (与)
- or (或)
- not (非)
优先级为是not > and > or
拓:这和 C 语言的语法一样,只是 C 语言用的是符号 &&(与)、||(或)、!(非)。只是Python把它语言化而已。
2. 基础使用
逻辑运算符最常见的是和python中的关系运算符(>、<、>=、<=、==、!=)搭配使用。
比如把 a 限定在 3 - 8 的范围(不包括边界)。
可以使用 a>3 && a<8
。
返回的结果是一个布尔值:True 或 False
。
拓:在 Python 中,在条件判断时,只要值不是 0 、None等空值,都认为是True
,即逻辑真。
如:
a = None
b = 0
c = 'c'
d = -1
if a:#相当于if False
if b:#相当于if False
if c:#相当于if True
if d:#相当于if True
3.进阶使用:短路运算符
and 和or 也称作短路运算符
短路运算符属性(由于以下结果不一定直接返回True 或False
所以我使用逻辑真,逻辑假这两个术语)
A and B:当 A 为逻辑假时,and没有进行判断 B 的值了,直接返回 A 的值。这就相当于短路了,所以叫短路运算符。(注意,不是一律返回True
,如果A 为 0,就返回 0 ,为True
时才返回True
)但当 A 为逻辑真时,无论 B 为何值,都返回 B 的值。
A or B:和 and 运算相反,当 A 为逻辑真时,or 没有进行判断 B 的值了,直接返回 A 的值。这就相当于短路了,所以叫短路运算符。
例子代码:
b = 2
a = None and b-1 #结果 a = None ,b = 2
a = 1 and b-1 #结果 a = 1,b = 1
a = None or b-1 #结果 a = 1 ,b = 1
a = 1 or b-1 #结果 a = 1,b = 2
利用and和or
短路特性,我们可以在一些情况很方便地为变量设定一个默认值。
例如:
A = {'a':1,'b':2}
B = A and A['b'] or 3 #这样无论A中是否有'b'键,B都有一个值,有时就为'b'键的值,没有就为默认值 3.