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运算了..
想不通
展开
 我来答
mieyoubeizhuce
推荐于2018-02-14 · TA获得超过610个赞
知道小有建树答主
回答量:733
采纳率:100%
帮助的人:476万
展开全部
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
windy一起混
2018-02-13
知道答主
回答量:1
采纳率:0%
帮助的人:906
引用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的高,应该先算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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
有机会理解力
2020-11-05
知道答主
回答量:16
采纳率:0%
帮助的人:1万
展开全部
`None or 1` 等于 1,算完之后还要再算 `1 and 2`。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式