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