每天学点Python之布尔类型


Python中的布尔类型有两个常量True和False表示。

布尔值转化

Python中的布尔值是可以转化为数值的,True表示1,而False表示0,可以对其进行数值运算,但不建议这么做,会引起代码的混乱。

真值测试

在Python中所有的对象都可以进行真值测试,下面罗列一下判断为假的情况:

  • None
  • False
  • 数值中的零,包括0,0.0,0j(虚数)
  • 空序列,包括空字符串(”),空元组(()),空列表([])
  • 空的字典{}
  • 自定义的对象的实例,该对象的__bool__方法返回False或者__len__方法返回0

除了以上的情况外,所有的对象在if或者while语句中的表现都为真。

布尔操作

在Python中布尔值可以进行或、且、否三种操作,与很多语言不同的是,Python中不是用符号,而是用英文单词来表示,分别是or、and和not。

需要注意的是or和and都支持短路操作,如果or的左边返回True,则右边就不会判断;同理如果and左边返回False,右边也不会进行判断。

not的优先级很低,not a == b表示的是not (a == b),而表达式a == not b会直接报错,需要加括号a == (not b)

比较操作

通过比较操作会返回布尔类型的值。除了普通的比较操作外,Python还支持is操作来判断两个对象是否是同一个对象,下面是Python支持的所有的比较操作:

操作符

解释

<

小于

<=

小于等于

>

大于

>=

大于等于

==

等于

!=

不等于

is

是相同对象

is not

是不同对象

实例

其他操作比较常见,给出一些is的用法示例:

a = None
        b = None
        # True,因为None只有唯一实例
        r = a is b

        a = "22"
        b = "22"
        # True,直接声明的相同字符串也会指向同一个实例
        r = a is b

        a = [1]
        b = [1]
        # False,相等但不是同一个实例
        r = a is b

        a = [1]
        b = a
        c = a
        # True,指向同一个实例
        r = b is c

操作符重载

在Python中是支持操作符重载的,可以通过重载操作符来改变一般意义上的比较操作,具体内容会在学习object时再整理。