逻辑运算符&逻辑短路

时间:2022-02-12 15:44:11

(1)and 逻辑与

全真则真,一假则假

print(True and True)        #True
print(False and True) #False
print(False and False) #False
print(True and False) #False

(2)or 逻辑或

全假则假,一真则真

print(True or True)        #True
print(False or True) #True
print(False or False) #False
print(True or False) #True

(3)not 逻辑非, (取反)

print(not True)             #False
print(not False) #True

逻辑短路: 在逻辑运算符的左侧就可以判断出来True或False, 那么右侧代码就不执行

False and bool 逻辑短路, 右侧不执行 True or bool 逻辑短路, 右侧不执行

False and print(123)      # 短路
True or print(234) # 短路

True and print(345) # and左侧不能判断真假, 右侧打印执行345

逻辑运算符的返回值:

并不只是返回True或False, 也可以返回其他值(要先经过bool强转后进行运算)

短路时弹出左侧数据(如果方法有返回值弹出返回值, 无返回值弹出None),

不短路时弹出右侧数据的返回值.

# (1)
print(5 or 6 and 7) #
print(5 or True) #
print(False or 5) #
# (2)
print((5 or 6) and 7) #
# (3)
print(not(5 or 6) and 7) # False
# (4)
print(3 > 1 or 4 < 5 and 6 > 9 or 8 == 10) # True