为什么会是这样的结果,我认为and是取交集,or是并集;所有range(10) and range(5,20) 结果应该是(5,10)
range(10) or range(5,20) 结果应该是(1,20),错在哪?
慕雪2273792
浏览 877回答 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)的值。