python中两个range进行布尔运算结果?

为什么 

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),错在哪?

慕雪2273792
浏览 834回答 1
1回答

橋本奈奈未

理解错了,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)的值。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python