python的说明文档以及教材上、网上都说明and的优先级大于or。但我经过实际操作,发现其中规律似乎并不简单,下面我列举一些代码,来提出我的疑问:有时候or的优先级高,有时候and优先级高,并且并不是从左至右运算。
首先说明python当中的and 和 or运算逻辑如下(这里必须懂):
1、and运算:a and b ,如果a为False,直接返回a,不计算后续。否则返回b。
2、or运算: a or b ,如果a为True,直接返回a,不计算后续。否则返回b。
3、在python中0为False,非0为True。
下面展示让我困惑许久的代码:
1、下面代码不报错,说明了a or b ,如果a为True,则直接返回True,无须计算b的值。
print(True or 1/0) #输出True。 说明or前如果是True,则不会进行or后边运算。
2、下面这行代码,没有报除零异常。说明并没有优先进行and运算。
print(True or True and 1/0) #输出True。 证明先进行or运算,后边and运算没进行。
3、在python中0为False,非0为True。那么看下面代码:仍然说明并没有优先进行and运算。
print(2 or 2 and 1/0) #输出2。证明先进行or运算,后面and运算并没进行计算。
4、下面代码说明优先计算了and。否则 如果先计算or,结果应该是2;如果从左向右计算,结果应该是5。
print(0 and 2 or 4 or 1 and 5) #输出4。说明是先and后or。 等同于(0 and 2) or 4 or (1 and 5)
针对以上问题,期盼有师者为我解惑!
标签:说明,优先级,运算,python,运算符,print,True From: https://blog.csdn.net/qq_28816251/article/details/140425560