為什么?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
提交
取消
