Menu
Français

Opérateurs Python : arithmétiques, comparaison, logiques, appartenance et identité

Un tour complet des opérateurs Python — arithmétiques, comparaison, logiques, affectation, appartenance et identité — avec des exemples de chacun.

Les opérateurs sont juste des symboles pour des actions

Un opérateur est un symbole (ou un court mot-clé) qui dit à Python de faire quelque chose avec une ou deux valeurs — les additionner, les comparer, vérifier si l'une contient l'autre. Tu en connais déjà quelques-uns grâce aux maths de base ; Python en a quelques-uns en plus pour la logique, l'appartenance et l'identité.

On va passer les principales catégories une à une.

Opérateurs arithmétiques

Les opérateurs mathématiques standard, plus deux spécialités Python :

main.py
Output
Click Run to see the output here.

Deux éléments de cette liste sont faciles à oublier :

  • / renvoie un float même quand les deux côtés sont des entiers. 10 / 2 te donne 5.0. Pour une division entière, utilise //.
  • % est le modulo. n % 2 == 0 est la façon la plus propre de tester si n est pair.

Python suit la priorité mathématique standard : ** lie plus fort que * et /, qui lient plus fort que + et -. Les parenthèses priment sur tout :

main.py
Output
Click Run to see the output here.

Utilise les parenthèses généreusement quand il y a le moindre doute. Elles ne coûtent rien et rendent l'intention évidente.

Opérateurs de comparaison

Six comparaisons, chacune renvoyant un booléen :

main.py
Output
Click Run to see the output here.

Python te permet d'enchaîner les comparaisons, ce qui est inhabituel et utile :

main.py
Output
Click Run to see the output here.

Ça se lit « age est au moins 18 et inférieur à 65 ». Sous le capot, c'est équivalent à 18 <= age and age < 65, mais ça se lit plus comme les maths.

Opérateurs logiques

Écrits comme des mots anglais, pas comme des symboles :

main.py
Output
Click Run to see the output here.

Deux détails à connaître :

Évaluation court-circuit. and s'arrête à la première valeur falsy ; or s'arrête à la première valeur truthy. Le côté droit n'est même pas évalué si le côté gauche a déjà décidé la réponse. Ça te permet de te protéger des erreurs en toute sécurité :

main.py
Output
Click Run to see the output here.

and/or renvoient la valeur, pas toujours True/False. Ils renvoient celui des opérandes qui a décidé le résultat :

main.py
Output
Click Run to see the output here.

Tu verras name = user_input or "anonymous" dans du vrai code — c'est un motif de valeur par défaut bâti sur ce comportement.

Opérateurs d'affectation

= affecte. Les formes composées combinent une opération avec une affectation :

main.py
Output
Click Run to see the output here.

Les formes composées marchent aussi pour les chaînes (s += "more") et les listes (lst += [4, 5]). Elles ne sont pas plus rapides que la forme complète ; elles sont juste plus courtes.

Appartenance : in et not in

Teste si une valeur apparaît dans un conteneur :

main.py
Output
Click Run to see the output here.

in fonctionne sur tout itérable — listes, tuples, ensembles, chaînes, dictionnaires et plus. Pour de grosses recherches, in sur une liste est en O(n) ; in sur un set ou dict est en O(1). Ça compte dès que tu vérifies l'appartenance beaucoup de fois.

Identité : is et is not

is vérifie si deux variables pointent vers le même objet en mémoire, pas juste vers des valeurs égales :

main.py
Output
Click Run to see the output here.

Presque toujours, tu veux ==. Le seul endroit où is brille vraiment, c'est pour vérifier contre None, True et False :

main.py
Output
Click Run to see the output here.

La convention de la communauté est ferme : is None, pas == None. Pareil pour is True (même si tu en as rarement besoin).

Opérateurs bit à bit (passe à la première lecture)

Python a aussi des opérateurs bit à bit — &, |, ^, ~, <<, >> — pour manipuler les bits individuels d'un entier. Ils sont utiles en cryptographie, en réseau bas niveau et dans certains algorithmes. Tu peux les ignorer sans risque à la première lecture.

L'opérateur walrus (:=)

Python 3.8 a ajouté :=, qui affecte et renvoie une valeur dans une seule expression. Utile dans des conditions où tu veux à la fois capturer et tester un résultat :

main.py
Output
Click Run to see the output here.

Sans le walrus, tu appellerais len(numbers) deux fois ou tu ajouterais une ligne supplémentaire. Ce n'est pas essentiel ; utilise-le quand ça réduit la répétition.

Antisèche de priorité des opérateurs

Du plus serré au plus lâche pour les opérateurs que tu utiliseras vraiment :

  1. ** — exposant
  2. *, /, //, % — multiplication et division
  3. +, - — addition et soustraction
  4. <, <=, >, >=, ==, != — comparaisons
  5. not
  6. and
  7. or

Dans le doute, mets des parenthèses. La clarté bat l'astuce.

Vers le contrôle de flux

Avec les opérateurs en poche, tu peux écrire des conditions. La page suivante, c'est if/elif/else — la construction qui laisse ton programme prendre un chemin ou un autre selon ce que lui disent les opérateurs.

Questions fréquentes

Quels sont les principaux types d'opérateurs en Python ?

Arithmétiques (+, -, *, /, //, %, **), comparaison (==, !=, <, <=, >, >=), logiques (and, or, not), affectation (=, +=, -=, …), appartenance (in, not in) et identité (is, is not).

Quelle est la différence entre == et is en Python ?

== vérifie si deux valeurs sont égales. is vérifie si deux variables désignent exactement le même objet en mémoire. Pour None, True et False, utilise is — ce sont des singletons. Pour tout le reste, == est presque toujours ce que tu veux.

Que fait l'opérateur % en Python ?

Pour les nombres, % est l'opérateur modulo — il renvoie le reste d'une division. 17 % 5 vaut 2. Pour les chaînes, c'est une syntaxe de formatage d'ancien style (comme "hello %s" % name), mais les f-strings l'ont largement remplacée.

Apprendre à coder avec Coddy

COMMENCER