Python 布尔类型 bool 使用说明
Python 布尔类型
Python 的布尔类型bool
继承自数字类型int
,主要用于表示真(True
)和假(False
)两种状态,因此,从用途上看,布尔类型和数字类型有很大区别。
Python 中的 True,False 等价于 1,0
既然bool
和int
类型存在继承关系,那么True
等价1
,False
等价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 布尔值
除了直接书写字面量True
和False
,你还可以使用bool
类型的构造器,创建一个 Python 布尔值。
bool([x], /)
- x 参数
x
参数表示用于创建布尔值的对象,如果未指定则布尔值为False
。
bool()
False
bool(1.23)
True
bool('')
False
将 Python 对象转换为布尔值
一个 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__ 方法
Python 对象的__bool__
方法,返回对象对应的布尔值。Python 对象的__len__
方法,返回对象的长度信息。
Python 字符串 'True' 和 'False' 都将被转换为布尔值 True
字符串是一种序列类型,__len__
方法决定了他将转换为哪种布尔值。由于'True'
和'False'
的长度都大于0
,因此他们都将转换为True
。
bool('False')
True
bool(())
False