not是一元运算符
not arg
假如参数arg表示True,则返回False;表示Fasle,则返回True。注意:
- not运算符返回的值一定的True或者False,即类型肯定为bool型。
- False、None、数值0、空容器(字符串、列表、元组、集合、字典)都表示False,其它值表示True。
- 用户自定义的对象,可以通过__bool__方法明确对象代表True或者False。
or与and是二元运算符
x and y
首先计算参数x,若x表示False值,直接返回参数x。若x表示True值,计算并返回参数y的值。
x or y
首先计算参数x的值,若x表示为True,则返回x的值。否则计算并返回y的值。
注意,不同于not运算符总是返回bool值,and、or运算符总是返回最后一个被计算的参数值,返回数据类型并不限制于bool型。
and与or的拓展
and、or连接多个参数表达式时,对于and逻辑运算,当有一个参数表达式表示False时,后续的参数表达式都不会被计算。同理or连接多个参数表达式时,当有一个参数表达式表示True时,后续的参数表达式也不会再参与运算。这两种情况下都是直接返回最后一个计算的参数表达式的值。如下所示: