L’opérateur Walrus := en Python
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 variablema_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]
.
Je m'appelle Thomas, et je code depuis plus de 20 ans. Depuis ma sortie de la première promotion de l'École 42, j'ai conçu et développé des centaines d'applications et de sites web. Sur ce blog, je partage avec vous les stratégies les plus efficaces pour maîtriser l'art de coder et progresser rapidement.