首先我们应该知道True和False都是bool类的对象,有关True和False不太清楚的可以参考Python中is和==的区别以及is None 第四部分, 这里不再详细解释。下面我们来看bool函数。
bool([x])
作用:
将x转换为Boolean类型,如果x缺省,返回False,bool也为int的子类;
参数x:
任意对象或缺省;大家注意到:这里使用了[x],说明x参数是可有可无的,如果不给任何参数则会返回False。
有两点需要说明:
- 如果参与算数运算的话,True相当于1,False相当于0
- 上面说是将x转换为bool,其实本质是根据一定的规则返回内建的True或者False对象。
规则如下:- None为False
- 数字类型(整形,浮点。。。),0为False,其他为True
- 列表类型(list,tuple,。。。),长度为0的为False,其他为True
- Map类型(字典),条目个数为0的为False,其他为True
- 任何其他类型的对象均为True
这个规则是定义在解释器内部的,所以是不可改变的。在Python源代码中的object.c中可以找到该规则的代码。
当使用非bool对象作为if或者while的判断条件时,会自动按照上述的规则进行转换。
原文链接: