2022年 11月 5日

python的布尔类型

前面我们了解到,布尔类型是Python的基础数据类型,布尔类型只有True和False两种值,本节课我们学习布尔类型的集中运算。

布尔类型是Python的基础数据类型,布尔类型只有True和False两种值

与运算

只有两个布尔值都为 True 时,计算结果才为 True。 

  1. True and True
  2. True and False
  3. False and True
  4. False and False

 

 

或运算 

只要有一个布尔值为 True,计算结果就是 True。 

  1. True or True
  2. True or False
  3. False or True
  4. False or False

 

非运算 

 把True变为False,或者把False变为True:

  1. not True
  2. not False

 

我们学习这些运算有什么用呢?计算机程序是由无数的逻辑分支组成的,通过布尔运算,可以在计算机中实现条件判断,根据计算结果为True或者False,计算机可以自动执行不同的后续代码,因此学习布尔运算也是非常有必要的

布尔类型还可以与其他数据类型(字符串,数字等)做 and、or和not运算 例:

  1. a = True
  2. print(a and 0 or 99) # ==> 99

得到的计算结果不是布尔类型,而是数字99,这是为什么呢?

因为Python把0、空字符串和None看成False,其他数值和非空字符串都看成True,所以:

True and 0计算结果是0 
继续计算0 or 99计算结果是 99 
因此,结果是99。
需要注意的是,not计算的优先级是高于and和or的True and not False # ==> True 

True and not False # ==> True

在上述布尔计算中,先计算not False = True,然后再计算True and True,因此得到True的结果

短路计算 

  1. 在计算a and b时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b
  2. 在计算a or b时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b 

所以Python解释器在做布尔运算时,只要能提前确定计算结果,它就不会往后算了,直接返回结果