02 逻辑运算补充(面试重点,开发了解)
一、逻辑运算之优先级运算
优先级
- 括号 > not > and > or
条件语句:由全and、或全or连接
- 条件语句的单一连接情况,按照从左到右的顺序依次计算
print(True and 10 > 3 and not 4 < 3 and 1 == 1) # True
print(False or 10 < 3 or not 4 < 3 or 1 == 1) # True
条件语句:混合连用
- 混合连接的语句,先计算not,再以and为中心,把左右紧连的两个条件用括号括起来,剩下就只剩or语句,顺序就是单纯的从左到右了
res = 10 == 9 and 0 < 3 or '' == 'egon' and 0> 3 or not True or 'egon' == 'dsb' and 333 > 100 or 10 > 4
# 先计算not
res = 10 == 9 and 0 < 3 or '' == 'egon' and 0 > 3 or False or 'egon' == 'dsb' and 333 > 100 or 10 > 4
# 再以and为中心,把左右紧连的两个条件用括号括起来
res = (10 == 9 and 0 < 3) or ('' == 'egon' and 0 > 3) or False or ('egon' == 'dsb' and 333 > 100) or 10 > 4
res =
二、逻辑运算之短路运算
显/隐式布尔类型
显示布尔值:True,False
隐式布尔值(表示False): 0、None、空([],{},set(),(),'')
所有的数据类型的值都自带布尔值,所以值可以直接当成条件使用
# 示范一 if 111 and 123: print('ok') else: print('no') # 示范二 x = '' if x: print('不为空') else: print("为空")
偷懒原则
and的偷懒原则:当紧连的左边的条件值为False,右边的条件将不会进行计算。
or的偷懒原则: 当紧连的左边的条件值为True,右边的条件将不会进行计算。
and或or两边连接的条件,也能进行变量的赋值操作
根据偷懒原则:and和or的运算会返回当前计算位置的值
# and偷懒 result1 = 0 and 123 print(result1) # 0 # and不偷懒 result2 = 111 and 123 print(result2) # 123 # or偷懒 result1 = 111 or 123 print(result1) # 111 # or不偷懒 result2 = 0 or 123 print(result2) # 123