1. 通过简单电路理解逻辑运算符not/and/or
2. python中的逻辑运算符
2.1 短路与(and)
以position1 and position2
为例,首先需要说明的是,这里的position1和position2可以理解为占位符,因为它们既可能是某种类型的数据,也可能是一个表达式。由于表达式的返回值最终还是某种类型的数据。那么我们姑且将position1位置的终值记为x,将position2位置的终值记为y。则最终进行的短路与运算其实是x and y
。
# 两种情况
#1.表达式中有0或False,0 and任何数都是0,False and任何数都是False
print(0 and 4)
print(False and 4)
# 2.表达式中全是True或非0值,结果是最后一个数
# 当x和y均为某种类型的数据时,结果为y
print(3 and 4)
总结
:
- 表达式中有0或False,则运算结果为0或False。
- 0 and 任何数据都是0(包括False);False and任何数据都是False(0除外)。
- 当表达式中既无False也无0,结果为最后一个and的值
2.2 短路或(or)
例:A or B or C or D
。值为A,B,C,D从左向右第一个不为0或False的数据。
print(1 or 2 or 3 or 4) # 1
print(0 or 1 or 2) # 1
print(0 or False) # False
print(False or 1) # 1
print(False or 0) # 0
总结
:
- 0 和 False作或运算时,结果为后边的那个。即
0 or False
结果为False,False or 0
结果为0 0 or 0
结果为0,False or False
结果为False- 其余情况结果均为第一个非0或非False的值,如
0 or 1 or 2
结果为1
2.3 逻辑非(not)
not 只在以下四种情况下,结果为True:① not 0
② not False
③ not ''
④not None
。其余情况结果均为False。
print(not 0) # True
print(not False) # True
print(not '') # True
print(not None) # True
print(not 1) # False
print(not 'ad') # False
print(not 'a') # False