Python 布尔类型 bool 使用说明

我被代码海扁署名-非商业-禁演绎
阅读 2:50·字数 854·发布 
Bilibili 空间
关注 960

Python 布尔类型

Python 的布尔类型bool继承自数字类型int,主要用于表示真(True)和假(False)两种状态,因此,从用途上看,布尔类型和数字类型有很大区别。

Python 中的 True,False 等价于 1,0

既然boolint类型存在继承关系,那么True等价1False等价0的设计就是可以理解的。

True == 1
True
0 == False
True
1 + True
2

不建议在 Python 中直接使用布尔值参与算术运算

通过上面的示例,我们看到表达式1+True可以得到预期结果2,但官方建议使用int构造器显式的转换布尔值,原表达式最好书写为1+int(True)。是的,这是一种更为稳妥的方法,以防止意外的发生。

数字类型

要想了解 Python 数字类型,你可以查看Python 数字类型 int,float,complex 使用说明一节。

使用 bool 构造器创建 Python 布尔值

除了直接书写字面量TrueFalse,你还可以使用bool类型的构造器,创建一个 Python 布尔值。

bool([x], /)

x 参数

x参数表示用于创建布尔值的对象,如果未指定则布尔值为False

bool()
False
bool(1.23)
True
bool('')
False

将 Python 对象转换为布尔值

一个 Python 对象可以被隐式的转换为布尔值,这会发生在使用bool构造器,或对象作为ifwhile语句的判断依据时。

隐式转换工作由对象的__bool__方法完成,该方法返回TrueFalse,对应了隐式转换的结果。如果__bool__方法不存在,那么将根据__len__方法的返回值决定转换结果,__len__返回0对应False,返回其他值对应True。如果__len__方法也不存在,那么对象将转换为True

在 Python 中,None,等价于0的数字,长度为0的序列或集合对象,都将被视为False。比如,0+0j(){}

Python 对象的 __bool__ 和 __len__ 方法

Python 对象的__bool__方法,返回对象对应的布尔值。Python 对象的__len__方法,返回对象的长度信息。

Python 字符串 'True' 和 'False' 都将被转换为布尔值 True

字符串是一种序列类型,__len__方法决定了他将转换为哪种布尔值。由于'True''False'的长度都大于0,因此他们都将转换为True

bool('False')
True
bool(())
False