2017-03-15 3 views

Répondre

7

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.

3

From the docs:

Contrairement à C, des expressions comme a < b < c ont l'interprétation qui est classique en mathématiques

Les comparaisons peuvent être enchaînées de façon arbitraire, par exemple, x < y <= z est équivalent à x < y and y <= z, sauf que y est évalué une seule fois (mais dans les deux cas , z n'est pas évalué du tout lorsque x < y s'avère être false).

Par conséquent

-3 < -2 < -1 

est équivalent à

-3 < -2 and -2 < -1 # where -2 is evaluated only once