1 == 2 == 2はどのように評価されますか?[複製]

Aug 22 2020

これをREPLで実行すると、

>>> 1 == 2 == 2
False

驚いたことに、Cではこれは1と評価されます。右側が評価されることを期待しTrue1 == TrueおりTrue、Pythonを使用しています。たとえば、これは私が期待するように評価されます。

>>> 1 == (2 == 2)
True

Pythonは最初の式をどのように解析および評価していますか?これは同じように評価されますが、これ==は右結合であり、Cでは0と評価されるため、私が期待するものです。

>>> 2 == 2 == 1
False

回答

7 Noname Aug 22 2020 at 00:22

これは、オペレーターの連鎖現象によるものです。

例 :

>>>  1==2
=> False
>>> 2!=3
=> True

>>> (1==2) and (2!=3)
  # False and True
=> False