Accéder au contenu principal

Opérateurs en Python

Ce tutoriel aborde les différents types d'opérateurs en Python, la surcharge des opérateurs, la précédence et l'associativité.
Actualisé 16 janv. 2025  · 9 min de lecture

Tout comme en mathématiques, les langages de programmation tels que Python disposent d'opérateurs. Vous pouvez les considérer comme des fonctions extrêmement simples qui sont à la base de l'informatique. Il s'agit des opérations les plus simples auxquelles un programme informatique peut être réduit. Il s'agit de connaissances essentielles pour tout scientifique de données ou ingénieur logiciel en herbe.

Dans ce tutoriel, vous apprendrez

Si vous souhaitez en savoir plus sur les bases du langage de programmation Python, ne manquez pas de consulter notre cours gratuit Intro to Python for Data Science.

Opérateurs arithmétiques

Vous les connaissez probablement déjà, puisqu'ils sont issus des mathématiques de base.

Les opérateurs arithmétiques sont l'addition (+), la soustraction (-), la multiplication (*), la division (/), l'exposant (**), la division plancher (//) et le module (%). Les quatre premières sont assez simples : il s'agit de l'addition, de la soustraction, de la multiplication et de la division, et vous les connaissez probablement déjà.

# Addition
print(5 + 2)

# Subtraction
print(5 - 2)

# Multiplication
print(5 * 2)

# Division
print(5 / 2)
7
3
10
2.5

Les trois autres sont un peu plus complexes. L'opérateur exposant signifie "élevé à la puissance de". Par exemple, 2 ** 3 signifie que 2 est multiplié par lui-même 3 fois, de sorte que 2 ** 3 est identique à 2 * 2 * 2, qui est égal à 8.

La division par étage est identique à la division normale, à ceci près que le résultat est toujours arrondi à la valeur inférieure. Dans l'exemple ci-dessous, 5 est divisé par 2, ce qui donne 2,5. Mais comme il s'agit de la division plancher, 2,5 est arrondi à 2.

Enfin, le module est le reste après la division. Dans le cas de 5%2, le chiffre 2 ne tient que deux fois dans 5, ce qui signifie que le reste est 1.

# Exponent
print(5 ** 2)
# This is the same as 5 * 5

# Floor Division
print(5 // 2)

# Modulus
print(5 % 2)
25
2
1

En Python, l'opérateur d'addition peut également être utilisé pour concaténer des chaînes de caractères. Cela signifie qu'ils seront assemblés en une seule chaîne, par exemple :

firstName = "Théo"

introduction = "Hi, my name is " + firstName + "."

print(introduction)
Hi, my name is Théo.

Opérateurs d'affectation

Si vous avez une certaine expérience de la programmation, vous avez certainement déjà utilisé des opérateurs d'affectation. Ils attribuent une certaine valeur à une variable. Le plus utilisé est =. Pour l'utiliser, il suffit de taper le nom de la variable à laquelle vous voulez attribuer une nouvelle valeur, le =, et la valeur que vous souhaitez voir attribuer. Par exemple, si vous souhaitez affecter la valeur 100 à la variable balance, vous pouvez procéder comme suit :

balance = 100
print(balance)
100

Si vous souhaitez incrémenter la valeur de balance de 10, vous pouvez utiliser balance += 10. C'est l'équivalent de balance = balance + 10, mais c'est beaucoup plus court.

balance += 10
print(balance)
110

Il en va de même pour -=, balance -= 10 est identique à balance = balance - 10:

print(balance)
balance -= 10
print(balance)
110
100

Les autres opérateurs d'affectation fonctionnent exactement de la même manière. Il s'agit de

  • *=
  • /=
  • **=
  • //=
  • %=

Opérateurs de comparaison

Vous pouvez utiliser des opérateurs de comparaison pour, vous l'aurez deviné, comparer les valeurs des variables. Ils renvoient toujours une valeur booléenne, qui est soit True soit False. Ils sont au nombre de six :

  • Égale : ==
  • Pas d'égalité: !=
  • Supérieur à : >
  • Moins que : <
  • Supérieur ou égal : >=
  • Inférieur ou égal : <=

Voici quelques exemples de comparaisons :

a = 3
b = 5

print(a == b) # Equal
print(a != b) # Not equal
print(a > b) # Greater than
print(a < b) # Less than
print(a >= b) # Greater than or equal to
print(a <= b) # Less than or equal to
False
True
False
True
False
True

== et != peuvent également être utilisés pour comparer des chaînes de caractères au lieu de nombres. Les autres opérateurs ne sont pas compatibles avec les chaînes de caractères, car une chaîne ne peut pas être plus grande qu'une autre chaîne.

print("Hello" == "World")
print("Python" != "R")
False
True

Opérateurs logiques

Vous les connaissez peut-être déjà ! En logique, ils sont appelés connecteurs logiques. Ils sont également largement utilisés dans le langage humain. Il s'agit de : and, or et not.

and ne renverra True que si les deux opérandes (les deux objets booléens que vous comparez) sont True. Par exemple :

print(True and True)
print(True and False)
print(False and False)
True
False
False

Pour comprendre le comportement de cet opérateur logique, vous pouvez utiliser un tableau de vérité :

a b a et b
Vrai Vrai Vrai
Vrai Faux Faux
Faux Vrai Faux
Faux Faux Faux

or est Vrai, chaque fois qu'un (ou plusieurs) opérande est Vrai.

print(True and True)
print(True and False)
True
False
a b a ou b
Vrai Vrai Vrai
Vrai Faux Vrai
Faux Vrai Vrai
Faux Faux Faux

Notez qu' ils fonctionnent également avec plus de deux opérandes, par exemple :

print(True and True and True and True)
print(True and True and True and False)
print(False or False or False or False)
print(False or False or False or True)
True
False
False
True

not renvoie l'inverse de son opérande, donc True si False est donné et vice-versa.

print(not True)
False
a pas un
Vrai Faux
Faux Vrai

Surcharge de l'opérateur

Rappelez-vous que vous avez vu précédemment comment + peut être utilisé pour additionner des nombres, mais qu'il peut également être utilisé pour concaténer, ou combiner des chaînes de caractères. Le site + fonctionne donc différemment selon le type d'objet sur lequel vous l'utilisez. Mais ce ne sera pas toujours le cas. Parfois, l'opérateur avec lequel vous travaillez ne prend tout simplement pas en charge le type d'objet sur lequel vous souhaitez l'utiliser.

En voici un exemple. Supposons que vous ayez deux objets Dog, ozzy et filou. Ils appartiennent à la classe Dog ci-dessous. Vous pouvez considérer la classe comme un plan de ce à quoi les objets doivent ressembler et comment ils doivent se comporter. Dans ce cas, les objets Dog ont un nom, un âge et une taille. Une fois la classe définie, vous pouvez instancier des objets. L'un d'entre eux est Ozzy, âgé de 3 ans et mesurant 30 centimètres. L'autre est Filou, il a 5 ans et mesure 65 centimètres.

Cet exemple utilise le concept de programmation orientée objet. Si vous souhaitez en savoir plus, lisez notre tutoriel sur la programmation orientée objet en Python.

Supposons que vous souhaitiez comparer les deux chiens à l'aide de la fonction plus grand que : >. Cela ne fonctionnera pas. Vous obtiendrez une erreur indiquant '>' not supported between instances of 'Dog' and 'Dog'. Cela signifie que > ne sait pas comment comparer les objets de la classe Dog.

class Dog:

    def __init__(self, name, age, height):  
        self.name = name
        self.age = age
        self.height = height

ozzy = Dog("Ozzy", 3, 30)
filou = Dog("Filou", 5, 65)

print(filou > ozzy)
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-96-428069ab24cc> in <module>()
      9 filou = Dog("Filou", 5, 65)
     10
---> 11 print(filou > ozzy)


TypeError: '>' not supported between instances of 'Dog' and 'Dog'

Heureusement, avec la surcharge d'opérateur, vous pouvez définir le comportement de l'opérateur lorsqu'il est appelé sur des objets Dog. Dans ce cas, il convient de définir une méthode appelée __gt__, qui signifie "plus grand que", et qui prend en compte deux arguments. Puisque nous voulons comparer nos chiens sur leur taille, la méthode renvoie self.height > other.height.

class Dog:

    def __init__(self, name, age, height):  
        self.name = name
        self.age = age
        self.height = height

    def __gt__(self,other):
        return self.height > other.height

ozzy = Dog("Ozzy", 3, 30)
filou = Dog("Filou", 5, 65)

print(filou > ozzy)
print(ozzy > filou)
True
False

Priorité

Lorsque vous combinez plusieurs opérateurs, les choses peuvent devenir confuses. Regardez l'exemple ci-dessous :

a = 2
b = 3
c = 9

a ** b > 5 and c - a // b >= 9 or b ** 2 == c
True

Comment savoir lequel sera exécuté en premier ? Comment devez-vous lire une ligne de code contenant de nombreux symboles ? L'exécution se fait-elle de gauche à droite ou dans un ordre précis ?

C'est là qu'intervient la préséance. Les opérateurs Python sont exécutés dans un ordre bien précis, et certains ont la priorité sur d'autres.

Dans le tableau suivant, vous pouvez voir la préséance des opérateurs, dans l'ordre de haut en bas. Ces règles sont les mêmes en mathématiques, où certains calculs d'une formule doivent être effectués avant d'autres.

Priorité Opérateur Description
1 ** exposant
2 *, /, %, // multiplier, diviser, modulo, division par étage
3 +, - plus, moins
4 >, <, >=, <= comparison
5 ==, != l'égalité
6 = %= /= //= -= += *= **= affectation
7 et, ou, pas logique

L'associativité

Vous avez pu constater que l'antériorité est importante ! Mais qu'en est-il de ceux qui sont au même niveau de priorité, comme la multiplication et la division ? Sont-ils exécutés en même temps ? No. *, \, % et \\ sont exécutés de gauche à droite, tandis que ** est exécuté de droite à gauche. C'est ce qu'on appelle l'associativité.

Regardez l'exemple suivant. Dans ce cas, les opérateurs sont exécutés de gauche à droite, et le résultat est 3.

print(5 * 2 // 3)
3

En ajoutant des parenthèses, vous pouvez toutefois modifier l'ordre d'exécution des opérateurs. Il s'agit de l'associativité, qui fonctionne de la même manière que l'associativité en mathématiques. Ce qui se trouve entre les crochets sera calculé en premier. Dans ce cas, la division de l'étage sera effectuée en premier, suivie de la multiplication.

print(5 * (2 // 3))

Conclusion

Vous savez maintenant ce que sont les opérateurs, comment les utiliser et comment ils fonctionnent. Vous avez également appris ce que sont la surcharge, la précédence et l'associativité. Vous êtes en bonne voie pour devenir un maître de Python ! Si vous voulez en apprendre encore plus, n'hésitez pas à consulter notre cours Python intermédiaire pour la science des données.

Sujets

Cours de Python

Certification disponible

cours

Introduction à la science des données en Python

4 hr
462.3K
Plongez dans la science des données à l'aide de Python et apprenez à analyser et à visualiser efficacement vos données. Aucune expérience ou compétence en matière de codage n'est nécessaire.
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow