if else表达式用法:
c = a if a>b else b # 先判断if条件,如果为True,返回a,否则返回b
and or表达式用法:
其原理是利用P and Q,在Python中如果P为假,那么Python将不会继续执行Q,而直接判定整个表达式为假(P值),如果P为真,那就还要继续执行Q来决定整个表达式值;同样的P or Q,如果P为真,那么就不会继续执行Q了
当数据都为布尔类型时,运算结果如下:
true and true = True
true and false = False
false and true = False
false and false = False
true or true = True
true or false = True
false or true = True
false or false = False
当数据存在布尔类型时,运算结果如下:
12 and true = True
true and 12 = 12
false and 12 = False
12 and false = False
12 or true = 12
true or 12 = True
false or 12 = 12
12 or false = 12
由结果可得以下结论:
(1)对于AND,若运算数据中存在False,则为False;否则,返回最右端数据。
(2)对于OR,若运算数据中存在False,则返回剩余数据;否则,返回最左端数据。
当数据都不为布尔类型时,运算结果如下:
6 or 7 = 6
6 and 7 = 7
'a' or 'b' = 'a'
'a' and 'b' = 'b'
6 or 'a' = 6
6 and 'a' = 'a'
可知,结论还适用。
在Python中,AND的优先级高于OR,因此,我们再按照之前的结论或者原理,可以推算出结果。写代码的时候最好根据原理来写,如果有大量的and/or,就可以用结论来判断。
5 or 6 and 7 = 5
5 and 6 or 7 = 6
5 or 6 or 7 = 5
5 and 6 and 7 = 7
'a' or 'b' and 'c' = 'a'
'a' and 'b' or 'c' = 'b'
'a' or 'b' or 'c' = 'a'
'a' and 'b' and 'c' = 'c'
1 or 'b' and 'c' = 1
1 and 'b' or 'c' = 'b'
1 or 'b' or 'c' = 1
1 and 'b' and 'c' = 'c'
特殊情况None(不包含布尔):
1.当与具体值比较时:and返回的是None,or返回的是具体值
'a' and None = None
None and 'a' = None
'a' or None = 'a'
None or 'a' = 'a'
1 and None = None
None and 1 = None
1 or None = 1
None or 1 = 1
None and 1 or 'a' = 'a'
1 and None or 'a' = 'a'
1 and 'a' or None = 'a'
2.当与空值(如:空列表/空集合/空字典)比较时:and返回的是左边的值,or返回的是右边的值
[] and None = []
None and [] = None
[] or None = None
None or [] = []