先看最简单的not
not x
它的结果只有两种
如果x为不是False
,''
,结果就为True
,否则结果是False
再看and
x and y
他的结果有两种,不是x的值,就是y的值
如果x为False,就返回x的值,如果x为True,则返回y的值,它返回的是关系式的值,而不是对应的布尔值
print(False and True)
print(0 and 4)
print(4 and 0)
>>> False
>>> 0
>>> 0
再看结果是否符合预期,在带有and的if判断中,只要有一个关系式为False就是Fasle,而
and的作用就是找可能为False的关系式
,所以它的逻辑是:如果第一个是False就返回第一个的值,否则返回第二个的值,在进行if判断的时候,再对and的结果进行判断是否为False
在看or
x or y
他的结果有两种,不是x的值,就是y的值
如果x为True,就返回x的值,如果x不为True,则返回y的值,它返回的是关系式的值,而不是对应的布尔值
print(False or True)
print(0 or 4)
print(4 or 0)
print('' or 0 )
>>> True
>>> 4
>>> 4
>>> 0
结果也是符合预期,
or 尝试找到布尔值为True的关系式,
,如果第一个为True,那就返回它,否则,返回第二个,在带有or的if的判断中,例如
if '' or 0:
print('lalaal')
他会先进行or运算,第一个的布尔值为False,所以返回第二个的值0
,if 0 时,0的布尔值为False,所以下面的不会被输出。