Python Language Chaînage ou opérateur


Exemple

Lors du test de plusieurs comparaisons d'égalité:

if a == 3 or b == 3 or c == 3:

il est tentant d'abréger cela pour

if a or b or c == 3: # Wrong

C'est faux; le or a l' opérateur priorité inférieure à == , de sorte que l'expression est évaluée comme if (a) or (b) or (c == 3): . La manière correcte est de vérifier explicitement toutes les conditions:

if a == 3 or b == 3 or c == 3:  # Right Way

Alternativement, la fonction any() intégrée peut être utilisée à la place des chaînes or opérateurs:

if any([a == 3, b == 3, c == 3]): # Right

Ou, pour le rendre plus efficace:

if any(x == 3 for x in (a, b, c)): # Right

Ou, pour le raccourcir:

if 3 in (a, b, c): # Right

Ici, nous utilisons l'opérateur in pour tester si la valeur est présente dans un tuple contenant les valeurs que nous voulons comparer.

De même, il est incorrect d'écrire

if a == 1 or 2 or 3:

qui devrait être écrit comme

if a in (1, 2, 3):