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é.
Ppour 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.Epour 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 !).MetDpour multiplication et division, qui ont la même priorité. Elles sont évaluées avant l’additionAet 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/yetx//yest 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 |
