發表文章

目前顯示的是 5月, 2024的文章

Python邏輯判斷要用「is」還是「==」

標準答案是用「is」 如果是兩個布林數要比較,就用「is」,例如 a is b (i > 0) is True 讀者最關心的應該是這個吧,若是不想探究原因的話,可以把此網頁關掉回去寫程式了。 什麼是「is」 「is」條件成立,代表左右兩端是同一樣東西,而「==」條件成立,左右兩端的值一樣就好。 舉個例子,變數的值一樣,但是代表不同東西: a = [1] b = [1] print(a == b) # True print(a is b) # False b[0] = 2 print(a) # [1] print(b) # [2] 另一個例子,兩個變數代表同一個東西,當然,它們的值也會相同: a = [1] b = a print(a == b) # True print(a is b) # True b[0] = 2 print(a) # [2] print(b) # [2] 當 a is b 條件成立時,b有變動,a會跟著變,反之亦然,因為它們是代表同一個東西。 Python中None、True、False這幾個值都是固定且唯一,「固定」代表值永遠不變,「唯一」代表程式中的None都是同一個東西,True、False也是如此,用is會是最適合的 a is None a is True a is False 用「==」跟用「is」結果一樣嗎 了解「is」與「==」的不同後,是不是覺得用「==」跟用「is」結果可能會不一樣,可是先前的程式通篇用「==」也是跑得很正常? 先來看True和False是什麼 print(int(True)) # 1 print(int(False)) # 0 在「==」的判斷中,True和False的值會是1和0,現在可以展示「==」與「is」會有不一樣的結果: print(1 == True) # True print(0 == False) # True print(1 is True) # False print(0 is False) # False 好的,我明白各位讀者的程式中,不會有整數和布林數比較條件的寫法,所以通篇用「==」也是跑得會跟預期一樣,但...