Participer au site avec un Tip
Rechercher
 

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 :

Table de précédence des opérateurs Python

Les mots clés Python


Accès rapide :
La table de précédence
Quelques exemples
Cas de la puissance d'une valeur négative
Cas des affectations multiples

La table de précédence

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).

Liste des opérateurs des plus prioritaires (en haut) au moins prioritaires (en bas)
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]
x[index:index]
x(arguments...)
x.attribute
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
-x
~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
 
<
<=
>
>=
==
!=
in
not in
is
is not
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

Quelques exemples

Voici quelques exemples subtils à connaître quant à l'utilisation de certains opérateurs.

Cas de la puissance d'une valeur négative

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
>>>

Cas des affectations multiples

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
>>> 


Les mots clés Python