为什么 x=range(10) and range(5,20)print(x)>>>(5,20)x=range(10) or range(5,20)print(x)>>>(1,10)为什么会是这样的结果,我认为and是取交集,or是并集;所有range(10) and range(5,20) 结果应该是(5,10)range(10) or range(5,20) 结果应该是(1,20),错在哪?
1 回答
已采纳
橋本奈奈未
TA贡献436条经验 获得超108个赞
理解错了,python里的布尔运算符and和or就好比像其它语言中的&&和||,布尔运算符是会返回后续表达式的值的,而且其具有短路特性,比如例子中的range(10) and range(5,20)两个表达式均为真,则and运算会返回最后一个表达式的值也就是range(5,20);而range(10) or range(5,20)之所以会返回range(10)是因为range(10)为真,则后续运算不需要进行了【因为只要一个为真or运算就肯定为真,这就是“短路”】,返回第一个表达式即range(10)的值。
添加回答
举报
0/150
提交
取消