Python 布尔类型 bool 使用说明
关注 1800
Python 布尔类型
Python 的布尔类型bool继承自数字类型int,主要用于表示真(True)和假(False)两种状态,因此,从用途上看,布尔类型和数字类型有很大区别。
True,False 等价于 1,0
既然bool和int类型存在继承关系,那么True等价1,False等价0的设计就是可以理解的。
True == 1
True
0 == False
True
1 + True
2不建议直接使用布尔值参与算术运算
通过上面的示例,我们看到表达式1+True可以得到预期结果2,但官方建议使用int构造器显式的转换布尔值,原表达式最好书写为1+int(True)。是的,这是一种更为稳妥的方法,以防止意外的发生。
数字类型
要想了解 Python 数字类型,你可以查看Python 数字类型 int,float,complex 使用说明一节。
创建 Python 布尔值
除了直接书写字面量True和False,你还可以使用bool类型的构造器,创建一个布尔值。
bool([x], /)
- x 参数
x参数表示用于创建布尔值的对象,如果未指定则布尔值为False。
bool()
False
bool(1.23)
True
bool('')
False将 Python 对象转换为布尔值
一个对象可以被隐式的转换为布尔值,这会发生在使用bool构造器,或对象作为if和while语句的判断依据时。
隐式转换工作由对象的__bool__方法完成,该方法返回True或False,对应了隐式转换的结果。如果__bool__方法不存在,那么将根据__len__方法的返回值决定转换结果,__len__返回0对应False,返回其他值对应True。如果__len__方法也不存在,那么对象将转换为True。
在 Python 中,None,等价于0的数字,长度为0的序列或集合对象,都将被视为False。比如,0+0j,(),{}。
Python 对象的 __bool__ 和 __len__ 方法
对象的__bool__方法,返回对象对应的布尔值。对象的__len__方法,返回对象的长度信息。
字符串 'True' 和 'False' 都将被转换为布尔值 True
字符串是一种序列类型,__len__方法决定了他将转换为哪种布尔值。由于'True'和'False'的长度都大于0,因此他们都将转换为True。
bool('False')
True
bool(())
False