Accès rapide :
La table de précédence
Quelques exemples
Cas de la puissance d'une valeur négative
Cas des affectations multiples
Quand vous définissez des expressions Python, il n'est pas toujours nécessaire de parenthéser les différentes parties d'une expression. Bien utilisées, les parenthèses peuvent dans certains cas aider à une meilleure compréhension du code. Mais attention, trop de parenthèses peut avoir l'effet inverse.
Dans le but de limiter la présence de parenthèses superflu, il est nécessaire de connaître la table de précédence des opérateurs. Cette table spécifie la priorité des opérateurs Python (des plus prioritaires en haut, au moins prioritaires en bas) ainsi que leur associativité (l'ordre d'évaluation, de gauche à droite ou de droite à gauche).
Priorité | Operateurs | Description | Associativité |
---|---|---|---|
Les plus prioritaires | () |
Définition d'une liste Définition d'un tableau Définition d'un set ou d'un dictionnaire |
|
x[index] |
Accès indexé slicing Appel d'une fonction Accès à un membre |
De la gauche vers la droite | |
await x |
Utilisation d'un « awaitables » | ||
** |
Opérateur d'exponentiation | De la droite vers la gauche | |
+x |
Signe positif Signe négatif Opérateur NOT bit à bit. |
De la gauche vers la droite | |
* |
Multiplication Multiplication matricielle Division Division entière Modulo (reste de la division entière) |
De la gauche vers la droite | |
+ |
Addition Soustraction |
De la gauche vers la droite | |
<< |
Décalage de bits vers la gauche Décalage de bits vers la droite |
De la gauche vers la droite | |
& | Opérateur AND bit à bit Opérateur d'intersection |
De la gauche vers la droite | |
^ | Opérateur XOR bit à bit Opérteur de différence symétrique |
De la gauche vers la droite | |
| | Opérateur OR bit à bit Opérateur d'union |
De la gauche vers la droite | |
< |
Infériorité stricte Infériorité Supériorité stricte Supériorité Egalité Différence Présence dans une collection Non présence dans une collection Comparaison Différence |
De la gauche vers la droite | |
not x |
Négation booléenne | De la gauche vers la droite | |
and | « ET » booléen | De la gauche vers la droite | |
or | « OU » booléen | De la gauche vers la droite | |
if - else | L'opérateur conditionnel | De la droite vers la gauche | |
lambda | définition d'expression lambda | ||
Les moins prioritaires | = |
Affectation Opérateurs d'affectations combinés |
De la droite vers la gauche |
Voici quelques exemples subtils à connaître quant à l'utilisation de certains opérateurs.
Considérons l'expression python -1 ** 2
: l'opérateur unaire de signe est moins prioritaire que l'opérateur **.
Vérifiez bien ce point dans la table de précédence ci-dessus. En conséquence l'expression précédente est équivalente à -(1 ** 2)
et calcule -1.
Or si vous souhaitiez élever la valeur -1
à une puissance donnée, vous devez donc utiliser des parenthèses autour de la valeur :
(-1) ** 2
.
>>> -1 ** 2 -1 >>> (-1) ** 2 1 >>> -2 ** 2 -4 >>> (-2) ** 2 4 >>>
En Python, l'affectation est un opérateur et non une instruction. Cela implique qu'une affectation calcule une valeur : en l'occurrence, la valeur affectée. De plus, l'ordre d'évaluation de cet opérateur est de la droite vers la gauche : vérifiez-le dans la table de précédence ci-dessus. En conséquence, vous pouvez donc cumuler plusieurs affectations de variables sur une même ligne.
>>> a = b = c = d = e = 123 >>> print(a, b, c, d, e) 123 123 123 123 123 >>>
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :