python中为什么print(None or 1 and 2) print(1 or None and 2)结果不一样?
print(Noneor1and2)print(1orNoneand2)第一行的值是2第二行的值是1如果按照and和or是同等关系去解释,运算从左向右运行,Noneor1...
print(None or 1 and 2)
print(1 or None and 2)
第一行的值是2
第二行的值是1
如果按照and和or是同等关系去解释,运算从左向右运行,None or 1还是1 or None最后都是1,应该是不影响结果的
那只能解释and运算优先于or运算了..
想不通 展开
print(1 or None and 2)
第一行的值是2
第二行的值是1
如果按照and和or是同等关系去解释,运算从左向右运行,None or 1还是1 or None最后都是1,应该是不影响结果的
那只能解释and运算优先于or运算了..
想不通 展开
3个回答
引用mieyoubeizhuce的回答:
and 和 or的优先级是一样的,但是 or有短路现象
True or xxx: 这种情况也不管xxx是什么,不会计算,就是True
所以:
None or 1 and 2: None or 1 是 1, 1 and 2 是 2
1 or None and 2: 符合 True or xxx 的短路情况,所以是 1
and 和 or的优先级是一样的,但是 or有短路现象
True or xxx: 这种情况也不管xxx是什么,不会计算,就是True
所以:
None or 1 and 2: None or 1 是 1, 1 and 2 是 2
1 or None and 2: 符合 True or xxx 的短路情况,所以是 1
展开全部
答案没错,但是思路是有点问题,and的优先级比or的高,应该先算and在算or
None or 1 and 2 先算 1 and 2 结果是2 ;and 是第一个数是True,前后都得看的 ,然后接的None or 2 ;结果是 2 ,or第一个数是None的话 要接的看第二个数
1 or None and 2 先算and None and 2 ,结果为None ,and 的第一个数是None的话就没必要看后面的啦,结果必然为None,接的算 1 or None ,结果为1,or如果第一个数是True的话 没必要看第二个数了,结果肯定为True
None or 1 and 2 先算 1 and 2 结果是2 ;and 是第一个数是True,前后都得看的 ,然后接的None or 2 ;结果是 2 ,or第一个数是None的话 要接的看第二个数
1 or None and 2 先算and None and 2 ,结果为None ,and 的第一个数是None的话就没必要看后面的啦,结果必然为None,接的算 1 or None ,结果为1,or如果第一个数是True的话 没必要看第二个数了,结果肯定为True
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
`None or 1` 等于 1,算完之后还要再算 `1 and 2`。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询