Blog • code, python

L’opérateur Walrus := en Python

Comment utiliser walrus (morse) en Python ? L'opérateur d'affectation walrus permet d'assigner une variable tout en évaluant la valeur.

Publie le 11 février 2024 • 3 min read
Cours recommandé

Python débutant

Bases du langageExercices corrigésQuatre projets progressifs

Apprenez Python à partir de zéro : variables, conditions, boucles, fonctions et structures de données. Chaque notion est suivie d'exercices corrigés automatiquement, et chaque chapitre se termine par un quiz.

Découvrir le cours

L'opérateur d'affectation walrus, également appelé morse en français, permet d'assigner une variable tout en évaluant la valeur.

Explications vidéo pour comprendre l’opérateur walrus en Python en moins d'une minute :

Que veut dire := en Python?

Les symboles := représentent l’opérateur walrus en Python. Il tient son nom de sa ressemblance avec la tête d'un morse avec ses defenses. On l'utilise pour assigner une valeur à une variable tout en renvoyant l'evaluation de l'operation.

Syntaxe :

variable := objet

Que fait l’opérateur walrus := en Python ?

L'evaluation d'une assignation de variable avec l’opérateur walrus (variable := objet) renvoie l'objet.

Donc (ma_variable := 12) :

  • assigne 12 à la variable ma_variable
  • renvoie 12

Comment utiliser walrus dans une fonction ?

On peut utiliser l’opérateur walrus dans une fonction comme la fonction print et lui assigner une valeur.

print(ma_variable := 42)
print(ma_variable / 2)

Affichera :

42
21

Comment utiliser walrus dans une boucle ?

Disons que nous voulons récupérer les carrés des nombres dans une liste uniquement si ces carrés sont inférieurs à 15.

nombres = [1, 2, 3, 4, 5]
carres = []

for nombre in nombres:
    c = nombre * nombre
    if c < 15:
        carres.append(c)

print(carres)

On peut effectuer l'assignation du carré à c directement dans la condition du "if" en utilisant l'opérateur walrus et en plaçant son assignation entre parenthèses.

nombres = [1, 2, 3, 4, 5]
carres = []

for nombre in nombres:
    if (c := nombre * nombre) < 15:
        carres.append(c)

print(carres)

Et notre programme fonctionne comme avant.

Ces deux programmes renvoient une liste avec les carres des nombres qui sont inférieurs à 15, donc : [1, 4, 9].

Comment utiliser walrus dans une liste en comprehension ?

Donc, on utilise surtout cet opérateur pour améliorer la lisibilité du code, mais aussi pour éviter des évaluations coûteuses qui se répètent.

Prenons cette même boucle mais sous forme de liste en compréhension.

nombres = [1, 2, 3, 4, 5]
l = [n * n for n in nombres if n * n < 15]
print(l)

On a toujours [1, 4, 9].

Dans ce code, on a calculé deux fois le carré. Sur un petit programme comme celui-ci, ce n'est pas un problème, mais on double le temps de calcul, ce qui n'est pas bon du point de vue des performances.

Donc, on peut plutôt utiliser l'opérateur walrus pour calculer le carré une seule fois en assignant sa valeur à la variable "c".

nombres = [1, 2, 3, 4, 5]
l = [c for n in nombres if (c := n * n) < 15]
print(l)

Et encore une fois, on a [1, 4, 9].

Cours recommandé

Python débutant

Bases du langageExercices corrigésQuatre projets progressifs

Apprenez Python à partir de zéro : variables, conditions, boucles, fonctions et structures de données. Chaque notion est suivie d'exercices corrigés automatiquement, et chaque chapitre se termine par un quiz.

Découvrir le cours
Thomas Collart

Thomas Collart, developpeur et formateur depuis plus de 20 ans. J'ai forme 3 700 etudiants a travers mes formations en ligne, cumule plus de 2 700 000 vues et 43 800 abonnes sur YouTube, TikTok et Instagram.