Programmation Python/Tableau des opérateurs

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche


Priorité des opérations[modifier | modifier le wikicode]

Lorsqu'il y a plus d'un opérateur dans une expression, l'ordre dans lequel les opérations doivent être effectuées dépend de règles de priorité. Sous Python, les règles de priorité sont les mêmes que celles qui vous ont été enseignées au cours de mathématique. Vous pouvez les mémoriser aisément à l'aide d'un « truc » mnémotechnique, l'acronyme PEMDAS :

  • P pour parenthèses. Ce sont elles qui ont la plus haute priorité. Elles vous permettent donc de « forcer » l'évaluation d'une expression dans l'ordre que vous voulez.
    Ainsi 2*(3-1) = 4, et (1+1)**(5-2) = 8.
  • E pour exposants. Les exposants sont évalués ensuite, avant les autres opérations.
    Ainsi 2**1+1 = 3 (et non 4), et 3*1**10 = 3 (et non 59049 !).
  • M et D pour multiplication et division, qui ont la même priorité. Elles sont évaluées avant l'addition A et la soustraction S, lesquelles sont donc effectuées en dernier lieu.
    Ainsi 2-2*2 renvoie -2 et non 0 !Et 2+4/2 renvoie 4.0 et non 3.0 (Rappelez-vous que / est l'opérateur de la division décimale).
    Si deux opérateurs ont la même priorité, l'évaluation est effectuée de gauche à droite.
    Ainsi dans l'expression 59*100/60, la multiplication est effectuée en premier, et la machine doit donc ensuite effectuer 5900/60, ce qui donne 98.0. Si la division était effectuée en premier, le résultat serait 59.0 (rappelez-vous ici encore qu'il s'agit d'une division classique).
  • A et S pour addition et soustraction.
Précédence des opérateurs (du plus au moins prioritaire[1])
Symbole Nom
{} Dictionnaire
() Argument
[] Partie (opérateur d'indiçage)
. Attribut
** Puissance
~ inversion de bit
+ Positif
- Négatif
* Multiplier
/ Diviser
// Résultat entier d'une division
% Modulo
Plus
Moins
<< Décalage à gauche
>> Décalage à droite
& et logique
^ ou exclusif
| ou logique
< inférieur
> supérieur
<= inférieur ou égal
>= supérieur ou égal
== est égal
!= est différent
is est
in appartient
not non booléen
and et booléen
or ou booléen
lambda expression lambda

Références[modifier | modifier le wikicode]