版权声明:本文为博主编写文章,未经博主允许转载,转载请注明出处: https://blog.csdn.net/qq_39742013/article/details/81988268
|和&可以用于条件判断,也可以用于数值运算。而and和or一样可以用于数值计算和条件判断。
数值计算:
|和&实质就是两个数二进制的或和与运算,最后得到十进制数。
and用于数值计算:如果出现0结果为0,两个非零时结果为第二个数。
or用于数值计算:至少有一个非零数时,结果为第一个非零数,如果两个数都为0,则结果为0。
条件判断:
|和&:两边可以是True和False的式子,最后得相应结果。
例如:
print(True|False) #True
当使用条件运算时这里需要注意,上诉说过,它们实际是位运算,这里注意:|和&的优先级高于==、!=、>=等条件运算符。
例如:
print(((1==1)|(2==1))&(3==3)) #True
print((1==1|2==1)&3==3) #False
print(1==1 & 2==2) #False
拿第三个式子来说,看似最后结果为True&True=True,但是因为&优先级更高,所以先运算1&2=0,然后1==0==2从左到右计算。不要认为1==0得到的是0,其实是False,可以做这样的示例,将第三个式子最后一个2改为0:
print(1==1 & 2==0) #False
结果任然为false,说明在python中1!=True,0!=False,与C++不同。至于为什么布尔类型可以用|和&运算,这个估计是内部进行了支持。
所以综上,在使用条件判断时,最好使用and和or,因为这两个和C++中的或和与使用方法一致,优先级肯定条件运算更高。