逻辑运算符
Python 逻辑运算符可以用来操作任何类型的表达式,不管表达式是不是 bool 类型;同时,逻辑运算的结果也不一定是 bool 类型,它也可以是任意类型。
这点是和C/C++等语言不同的,C/C++语言中逻辑运算符的结果就是bool类型,即true或者false。
下面来一一介绍。
1. not 逻辑非
结果只有 True 和 False。not可以对符号右侧的值进行非运算
1)对于布尔值,非运算会对其进行取反操作,True 变 False,False 变 True。
2)对于非布尔值,非运算会先将其转换为布尔值,然后再取反。
a. 字符串,有内容为True,空字符串为 False 。
b. 数字,0 为 False ,其它 为 True 。
print(not 0) # True print(not 10) # False print(not -1) # False print(not '') # True
2. and 逻辑与
and 可以对符号两侧的表达式进行与运算,它的两侧表达式的计算结果可以是 bool 类型,也可以是数字或者字符串。
我们将表达式的计算结果为 False、0、'' 等统一描述为假,反之描述为真。and 的返回结果可以是任意类型,由表达式决定。
Python中的与运算是短路的与,它的逻辑规则如下:
1)如果左边表达式的值为假,那么就不用计算右边表达式的值了,此时 and 会把左边表达式的值作为最终结果。
2)如果左边表达式的值为真,那么最终值是不能确定的,and 会继续计算右边表达式的值,并将右边表达式的值作为最终结果。
print(1 and 1.2) # 1.2 print(False and 10) # False print(-1 and 0) # 0 print('' and "123") # ''
3. or 逻辑或
or 可以对符号两侧的值进行或运算,与and类似,它的两侧表达式的计算结果可以是 bool 类型,也可以是数字或者字符串。
我们将表达式的计算结果为 False、0、'' 等统一描述为假,反之描述为真。or 的返回结果可以是任意类型,由表达式决定。
Python中的或运算是短路的或,它的逻辑规则如下:
1)如果左边表达式的值为真,那么就不用计算右边表达式的值了,此时 or 会把左边表达式的值作为最终结果。
2)如果左边表达式的值为假,那么最终值是不能确定的,or 会继续计算右边表达式的值,并将右边表达式的值作为最终结果。
print(1 or 1.2) # 1 print(False or 10) # 10 print(-1 or 0) # -1 print('' or "123") # "123"