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 :
Deux éléments de cette liste sont faciles à oublier :
/renvoie un float même quand les deux côtés sont des entiers.10 / 2te donne5.0. Pour une division entière, utilise//.%est le modulo.n % 2 == 0est la façon la plus propre de tester sinest 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 :
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 :
Python te permet d'enchaîner les comparaisons, ce qui est inhabituel et utile :
Ç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 :
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é :
and/or renvoient la valeur, pas toujours True/False. Ils renvoient celui des opérandes qui a décidé le résultat :
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.
Pour les règles complètes de ces trois opérateurs, y compris les valeurs qui comptent comme falsy, l'ordre de priorité entre not, and et or et la raison pour laquelle and n'est pas la même chose que &, consulte and, or et not en Python.
Opérateurs d'affectation
= affecte. Les formes composées combinent une opération avec une affectation :
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 :
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 :
Presque toujours, tu veux ==. Le seul endroit où is brille vraiment, c'est pour vérifier contre None, True et False :
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 :
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 :
**- exposant*,/,//,%- multiplication et division+,-- addition et soustraction<,<=,>,>=,==,!=- comparaisonsnotandor
Dans le doute, mets des parenthèses. La clarté bat l'astuce.
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.