python - 比較a,b== 1,2有什麼問題?




python-3.x (2)

基本上這種顯然奇怪的行為來自於你的表達的右側是元組,而左側不是元組。

使用此行實現預期結果,該行將元組與元組進行比較:

(a, b) == (1, 2)

你的表達式相當於:

(a, b == 1, 2)

哪個是包含 a 的元組, b1 之間的比較,以及 2

您可以使用 dis 模塊查看不同的行為來檢查python正在做什麼:

import dis

dis.dis("a,b == 1,2")
  1           0 LOAD_NAME                0 (a)
              2 LOAD_NAME                1 (b)
              4 LOAD_CONST               0 (1)
              6 COMPARE_OP               2 (==)
              8 LOAD_CONST               1 (2)
             10 BUILD_TUPLE              3
             12 RETURN_VALUE

 dis.dis("(a,b) == (1,2)")
  1           0 LOAD_NAME                0 (a)
              2 LOAD_NAME                1 (b)
              4 BUILD_TUPLE              2
              6 LOAD_CONST               0 ((1, 2))
              8 COMPARE_OP               2 (==)
             10 RETURN_VALUE

你可以看到在第一個評估中python正在加載 a ,然後加載,然後加載比較的右側元素( 1 )並比較最後兩個加載的元素,然後加載第二個右元素然後構建一個元組這些操作的結果並將其返回。

在第二個代碼中,python加載左側(操作0,2和4),加載右側(操作6),比較它們並返回值。

這個問題在這裡已有答案:

我正在編寫一些代碼,在代碼中, a = 1b = 2 。 那麼為什麼不是 a,b == 1,2 True? 相反,Python顯示 (1,False,1) 。 這是為什麼? 那是什麼意思?

a = 1
b= 2
a,b == 1,2

您需要使用parantheses顯式比較兩個元組:

a = 1
b = 2
print((a,b) == (1,2))  # True

現在,你正在創建元組 (a, b == 1, b) 。 評估為 (1, False, 2)





python-3.x