Bonjour à tous
J'essaye de comprendre comment Python analyse l'instruction "n < i < p", qui fonctionne et qui indique si i est compris entre "n" et "p".
En effet, j'ai beau me creuser la tête, je n'arrive pas à réaliser comment il fait la traduction.
Prenons un exemple plus concret: print(2 < i < 6) qui affichera "vrai" pour i valant 3, 4 et 5 et "faux" pour toutes les autres valeurs. Si on fait une analogie avec le C, cette instruction est possible mais là je sais ce qui se passe. Elle est alors exécutée séquentiellement (évaluation "2 < i" qui renverra 1 ou 0 selon que le test est vrai ou n'est pas vrai ; puis ce résultat "1" ou "0" sera évalué par rapport à "6" ce qui renverra alors toujours vrai) et donc en C c'est clair que cette instruction ne produit pas le résultat intuitivement attendu. Et Python est écrit en C.
Je remarque toutefois que je peux "forcer" les choses si j'écris print((2 < i) < 6) ce qui fait alors retomber Python dans le comportement décrit ci-dessus (ce qui montre en plus que cet opérateur "<" n'est pas associatif). Mais comment Python analyse alors le truc ? Y a-t-il un analyseur spécifiquement conçu pour ce type d'instruction ? Admettons. Mais que se passe-t-il alors si on étend (style 2 < i < 6 < 8) ???
Merci à tous.
Partager