Como 1 == 2 == 2 é avaliado? [duplicado]

Aug 22 2020

Executar isso no REPL me dá

>>> 1 == 2 == 2
False

O que me surpreendeu, em C isso seria avaliado como 1. Eu esperava que o lado direito fosse avaliado Truee 1 == Trueestá Trueem Python. Por exemplo, isso é avaliado como eu esperaria:

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

Como o Python está analisando e avaliando a primeira expressão? Isso avalia da mesma forma, mas é o que eu esperaria porque ==é associativo à direita e seria avaliado como 0 em C

>>> 2 == 2 == 1
False

Respostas

7 Noname Aug 22 2020 at 00:22

Isso se deve ao fenômeno de encadeamento de operadores

Um exemplo :

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

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