Les opérateurs python
Les opérateurs python
-
Objectifs
- Connaitre les opérateurs de python.
-
Définitions
- Un opérateur est un symbole (ou un mot réservé) utilisé pour effectuer une opération entre des opérandes.
- Une opérande est une variable, un littéral ou bien une expression.
- Un opérateur peut être unaire ou binaire.
- Les opérateurs fonctionnent avec des opérandes.
- Un opérateur est lié à un type de données.
-
Les opérateurs
-
Les opérateurs arithmétiques.
- Les opérateurs arithmétiques utilisent des valeurs numériques (variables ou littéraux) comme opérandes et renvoient une valeur numérique.
- L’addition (+), la soustraction (–), la multiplication (*), et la division (/) et % sont appelés opérateurs arithmétiques.
- Les opérateurs arithmétiques permettent d’effectuer des calculs sur le contenu des variables.
- x + y # Addition
- x – y # Soustraction
- x * y # Multiplication
- x / y # Division
- x // y # Pour obtenir le quotient de la division de a par b, il suffit d’écrire x//y.
- x % y # Modulo (reste) Pour obtenir le reste de la division de a par b, il suffit d’écrire x%y.
- -x # Opposé – opérateur unaire
- abs(x) # Valeur absolue – opérateur unaire
- x ** y # Puissance
- Certains opérateurs peuvent avoir des comportements différents en fonction des types d’opérandes sur lesquels ils agissent : on parle alors de surcharge des opérateurs. Exemple :
- « + » additionne des nombres, mais concatène des chaines de caractères.
- « * » multiplie des nombres entre eux, mais duplique des chaines de caractères.
-
Les opérateurs de comparaison.
- Tout comme les opérateurs logiques, les opérateurs de comparaison renvoient une valeur booléenne « True » ou « False ». Les opérateurs de comparaisons s’appliquent sur tous les types de base.
- x < y # Inférieur
- x <= y # Inférieur ou égal
- x > y # Supérieur
- x >= y # Supérieur ou égal
- x == y # Égal (attention !)
- x != y # Différent
- x <> y # Différent
- x is y # Identité
- x is not y # Non identité
-
Les opérateurs logiques.
- Pour réunir des expressions booléennes :
- x and y # Intersection
- x or y # Union
- not y # Négation
-
Les opérateurs d’affectation.
- L’affectation est l’instruction qui associe une valeur à une variable.
- Elle est symbolisée par le signe ‘=‘.
- Attention à ne pas confondre l’affectation avec un test d’égalité !
- L’affection ‘x = 98‘ se lit « x reçoit 98« .
- La partie droite est d’abord évaluée, son résultat est ensuite stocké dans la partie gauche.
- En Python, l’affectation est une instruction et non pas une opération, elle n’a donc pas de valeur.
- x = 98 # Affectation simple
- y = 98 > 50 # ‘y’ sera True ou False
- x = y
- x == y # Attention, test d’égalité ! Retourne True dans notre cas.
- l1 = l2 = [] # Affectation multiple
-
Priorité des opérations
- 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é.
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
etD
pour multiplication et division, qui ont la même priorité. Elles sont évaluées avant l’additionA
et la soustractionS
, lesquelles sont donc effectuées en dernier lieu. Ainsi 2*3-1 = 5 (plutôt que 4), et 2/3-1 = -0.3333… (plutôt que 1.0).- 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. Si la division était effectuée en premier, le résultat serait 59 (rappelez-vous ici que l’opérateur // effectue une division entière, et vérifiez en effectuant 59*(100//60)).
- Le tableau suivant résume la priorité des opérateurs en Python, de la priorité la plus élevée (la plus contraignante) à la priorité la plus basse (la moins contraignante).
- Les opérateurs dans la même boîte ont la même priorité. Sauf si la syntaxe est explicitement donnée, les opérateurs sont binaires.
- Les opérateurs d’une même boîte regroupent de gauche à droite (sauf pour l’exponentiation, qui regroupe de droite à gauche).
-
Applications
-
App01
La différence entre
x/y
etx//y
est que le premier donne une valeur approchée décimale à 16 chiffres après la virgule alors que la deuxième nous donne l’entier q tel que 0 <= x-yq < y.
L’égalité de deux valeurs est comparée avec l’opérateur " == " et non " = ". Ce dernier est en effet l’opérateur d’affectation et ne doit pas être utilisé dans une condition.
Opérateur | Exemple | Equivalent à | Description |
---|---|---|---|
= | x = 1 | x = 1 | Affecte 1 à la variable x |
+= | x += 1 | x = x + 1 | Ajoute 1 à la dernière valeur connue de x et affecte la nouvelle valeur (l’ancienne + 1) à x |
-= | x -= 1 | x = x – 1 | Enlève 1 à la dernière valeur connue de x et affecte la nouvelle valeur à x |
*= | x *= 2 | x = x * 2 | Multiplie par 2 la dernière valeur connue de x et affecte la nouvelle valeur à x |
/= | x /= 2 | x = x / 2 | Divise par 2 la dernière valeur connue de x et affecte la nouvelle valeur à x |
%= | x %= 2 | x = x % 2 | Calcule le reste de la division entière de x par 2 et affecte ce reste à x |
//= | x //= 2 | x = x // 2 | Calcule le résultat entier de la division de x par 2 et affecte ce résultat à x |
**= | x **= 4 | x = x ** 4 | Elève x à la puissance 4 et affecte la nouvelle valeur dans x |
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 :
Opérateur | La description |
---|---|
() | Parenthèses (regroupement) |
f (args …) | Appel de fonction |
x [index: index] | Tranchage |
x [index] | Abonnement |
x.attribut |
Référence d’attribut |
** | Exponentiation L’opérateur power **lie moins étroitement qu’un opérateur unaire arithmétique ou bit à bit à sa droite, c’est-à- 2**-1dire 0.5. |
~ x | Pas au niveau du bit |
+ x , – x | Positif négatif |
*, /,% | Multiplication, division, reste |
+, – | Addition soustraction |
<<, >> | Décalages au niveau du bit |
& | ET au niveau du bit |
^ | XOR au niveau du bit |
| | OU au niveau du bit |
dans, pas dans, est, n’est pas, <, <=,>,> =, <>,! =, == |
Comparaisons, appartenance, identité |
pas x | Booléen NOT |
et | ET booléen |
ou | OU booléen |
lambda | Expression Lambda |