Menu

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.

Cette page contient des éditeurs exécutables - modifiez, exécutez et voyez la sortie instantanément.

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 / 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 :

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 :

  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.

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.

Illustration des langages de programmation de Coddy

Apprendre à coder avec Coddy

COMMENCER