每天学点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时再整理。