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 会继续计算右边表达式的值,并将右边表达式的值作为最终结果。

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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"