Python的布尔类型有两个值:True和False(注意大小写要区分,首字母大写,注意)
0、逻辑运算符:a、与:and(两个都为True,结果才为True)
b、或:or(只要一个为True,则为True)
c、非:not(把True变为False,把False变为True)
1、and、or、not的优先级
not > and > or
2、真值测试
在Python中所有的对象都可以进行真值(布尔值)测试,下面列一下判断为False的情况:a、None
b、False
c、数值中的零,包括0,0.0,0j(虚数)
d、空序列,包括空字符串"",空元组(),空列表[]
e、空的字典{}
f、自定义的类的实例,该对象的__bool__方法(这是一个魔法方法)返回False或者__len__方法返回0 (__bool__与__len__也被称为
魔法方法,当你做运算符计算时,会自动被调用的方法,比如计算一个对象的bool值时,它俩就会被调用)
3、布尔操作的关键字
在Python中布尔值可以进行与、或、非三种操作,与很多语言不同的是,Python中不是用符号(比如java用&& || !),而是用英文单词来表示,分别是and、or、not
需要注意的是and和or都支持短路操作,同理如果and左边返回False,右边也不会进行判断,如果or的左边返回True,则右边就不会再判断了
4、比较操作会产生boolean值
通过比较操作会返回布尔类型的值。除了普通的比较操作外,Python还支持is操作来判断两个对象是否是同一个对象,下面是Python支持的所有的比较操作:
操作符 解释
< 小于
<= 小于等于
> 大于
>= 大于等于
== 等于
!= 不等于
is 是相同的对象
is not 是不同的对象
5、这里不再简介操作符重载的内容了,详见and、or那篇文章吧
6、那么任意一个对象,它的Boolean值是True,因为你没有重写 __bool__、或者__len__方法,这两个方法,我觉得需要单独熟悉一下>>> class Person(object):
... pass
...
>>> p = Person()
>>> p
<__main__.Person object at 0x108af3450>
>>> not p
False