Python基本数据类型:布尔类型(Boolean)

发表时间:2020-02-18

计算机的本质就是计算,在其内部是 0 1 的比特位的变化,对外表现就是数据的变化。那么,计算机都能处理什么数据呢?本质上,数据都是以字节(Byte)存储的,表现上看,它们就是整数、浮点数和字符串等。Python的基本数据类型也不外乎于此。

整数和浮点数就跟数学中的一样,而字符串就是各种字符的组合。另外Python还有一种数据类型叫做布尔类型(Boolean)。

布尔类型

布尔类型

布尔类型是计算机中最基本的类型,它是计算机二进制世界的体现,一切都是 0 1 。Python中的布尔类型只有两种值: True False 。(注意:首字母都是大写,与C++、JavaScript中的小写有所不同)

布尔类型回答的是 是非 问题,那么什么情况下是 True ,什么情况下是 False 呢? Python里面实现了一个 类型对象 叫做 bool ,bool是一个 int 的子类,内置的 True False 就是bool仅有的两个实例对象。

使用bool我们就可以对对象进行布尔真假判断:

In [3]: bool(None)
Out[3]: False

In [4]: bool(0)
Out[4]: False

In [5]: bool([])
Out[5]: False

In [6]: bool(())
Out[6]: False

In [7]: bool('')
Out[7]: False

In [8]: bool({})
Out[8]: False

以上是判断为假的情况,总结一下为假的情况有:

  • None, False
  • 数值中的 0 , 0.0 , 0j (虚数), Decimal(0) , Fraction(0, 1)
  • 空字符串( '' )、空元组( () )、空列表( [] )
  • 空字典( {} )、空集合( set() )
  • 对象默认为True,除非它有 bool ()方法且返回False或 len ()方法且返回0.

布尔运算: and, or, not

下面的表列举了布尔运算的结果,优先级为升序:

运算 表达式 结果 说明
或运算 x or y 如果x为False则取决于y;如果x为True则不考虑y (1)
与运算 x and y 如果x为False则不考虑y;如果x为True则取决于y (2)
非运算 not x 如果x为False则为True,否则为False (2)

说明:
(1) or 是一种“短路运算符”,只有当第一个为False时才去验证第二个。即:两个变量只要有一个为True则为True。
(2) and 也是种“短路运算符”,只有当第一个为True时才去验证第二个。即:两个变量都为True时结果才为True。
(3) not 的优先级比非布尔运算符底,所以 not a == b 解释为 not (a == b) ,并且 a == not b 是语法错误。

In [24]: 1 == not 2
  File "<ipython-input-24-886f7aef0701>", line 1
    1 == not 2
           ^
SyntaxError: invalid syntax


In [25]: not 1 == 22
Out[25]: True

上面讲到, or, and, not 的优先级是依次递增的,优先级跟小学数学中先乘除后加减但括号里面的更优先是一样的。
那么小猿们猜猜下面的代码会输出什么:

print('' or 'b' and 'c')

优先级 and 大于 or ,所以先计算 and
(1)先计算 'b' and 'c' 时, 'b' 是True,则结果取决于 'c' ,因此返回 'c'
(2)再计算 '' or 'c' '' 是False,则结果取决于 'C' ,因此返回 'c'
(3)最后打印出: c
你算对了吗?

比较运算

前面提到,布尔值反应的是“是非”,有比较才有是非。Python中有8中比较运算。它们有相同的优先级,比布尔运算的优先级高。比较运算符可以任意的连写,比如: x < y <=z 相当于 x < y and y <= z

下面我们用表格来说明这8种不同的比较运算:

运算 含义
< 小于
<= 小于等于
> 大于
>= 大于等于
== 等于
!= 不等于
is 是对象
is not 不是对象

总结

布尔类型(True, False)表示“是非”,是比较运算的结果,是条件判断的结果,从而决定程序的流程和分支走向。

文章来源互联网,如有侵权,请联系管理员删除。邮箱:417803890@qq.com / QQ:417803890

微配音

Python Free

邮箱:417803890@qq.com
QQ:417803890

皖ICP备19001818号-4
© 2019 copyright www.pythonf.cn - All rights reserved

微信扫一扫关注公众号:

联系方式

Python Free