-3<-2<-1
renvoie True
.Comment la priorité de l'opérateur python fonctionne-t-elle avec des comparaisons doubles?
Cependant, j'attendre interprété comme
(-3<-2)<-1
True<-1
1<-1
False
Comment est-ce possible?
-3<-2<-1
renvoie True
.Comment la priorité de l'opérateur python fonctionne-t-elle avec des comparaisons doubles?
Cependant, j'attendre interprété comme
(-3<-2)<-1
True<-1
1<-1
False
Comment est-ce possible?
Ceci est un chained comparison. Au lieu d'être associative gauche comme (-3 < -2) < -1
ou droit associatif comme -3 < (-2 < -1)
, il est en fait traité comme
(-3 < -2) and (-2 < -1)
sauf que -2
est évalué au plus une fois.
Contrairement à C, des expressions comme
a < b < c
ont l'interprétation qui est classique en mathématiquesLes comparaisons peuvent être enchaînées de façon arbitraire, par exemple,
x < y <= z
est équivalent àx < y and y <= z
, sauf quey
est évalué une seule fois (mais dans les deux cas ,z
n'est pas évalué du tout lorsquex < y
s'avère êtrefalse
).
Par conséquent
-3 < -2 < -1
est équivalent à
-3 < -2 and -2 < -1 # where -2 is evaluated only once
Il est indiqué dans le documentation qu'il fait partie de la langue
Voici comment fonctionne Python. Une des nombreuses grandes caractéristiques de cette langue si vous me demandez. – Elmex80s