→ justoncetime: 因為is先於> ,同階由左而右。 08/04 15:54
→ justoncetime: python operator precedence 08/04 15:55
→ tysh710320: print(2 is True) >>> False 原式變成print(3> False) 08/04 16:10
→ tysh710320: 又偏偏是True 而不是False 何解? 08/04 16:11
→ justoncetime: 前面由左而右,指同一階運算子同時出現時,位在左邊的 08/04 16:11
→ justoncetime: 運算子先處理。不是在式子出現同階時,由左而右 08/04 16:12
→ justoncetime: g官方的Operator precedence吧 08/04 16:14
→ justoncetime: 原式3>2 is True依據precedence變成3>(2 is True) 08/04 16:26
→ justoncetime: 另外int(False)結果為0,所以最終結果就出來了。 08/04 16:34
→ justoncetime: 啊我懂二樓的疑問了 08/04 16:37
→ justoncetime: 抱歉 我剛看了原文,上面的解釋好像不對 Orz 08/04 16:52
→ mikapauli: 3 > 2 and 2 is True 08/04 17:11
→ mikapauli: 類似的有3 > 2 in {True} 08/04 17:12
→ tysh710320: 所以請問甚麼狀況下 要判斷多出一個and ? 08/04 18:37
推 germun: 我猜3>2應該是個operation所以不是boolean 所以不是True 08/04 19:04
→ germun: 你加個括號或運算後才會得到boolean 08/04 19:04
→ germun: 是說寫這麼多年還真沒遇到這情況.....原po真厲害 08/04 19:05
→ germun: 例如你用 (3<5) == 3<5 也會是False 08/04 19:09
→ germun: 而((3<5) == 3)<5 跟 (3<5) == (3<5) 都是True 08/04 19:09
→ germun: 總之想保險又避免混淆好閱讀 加括號就對了 08/04 19:10
→ mikapauli: in, not in, is, is not, <, <=, >, >=, !=, == 08/04 19:16
→ mikapauli: 這些結合時都是這樣 08/04 19:17
→ mikapauli: 為了讓0 < x < 1這種表達式符合直觀 08/04 19:18
→ mikapauli: 或是'a' in 'ab' in 'abc'這類 08/04 19:20
推 germun: 懂樓上意思了 原來如此@@ 08/04 19:36
→ germun: 所以 3 > 2 == 2 就會是True, 因為是看成3 > 2 and 2 == 2 08/04 19:38