¿Qué es el operador walrus y cómo utilizarlo en Python?
¡Hola! Espero que estéis bien, yo terminando ya las vacas 😢, pero bueno, he recargado las pilas que es lo importante 💪. En el tutorial de esta semana vamos a seguir con la ruta de Python y esta vez vamos a ver como utilizar el operador walrus en Python.
¿Qué es el operador Walrus?
El operador walrus se escribe := y se llama así por su similitud a una morsa (o eso dicen). En Python se utiliza para asignar valores a variables mientras se utilizan y se puede usar desde la versión 3.8 de Python.
Ejemplos con el operador Walrus
Ahora vamos a ver un ejemplo de código sin utilizar Walrus y luego lo transformaremos para ejemplificar como usar este operador.
def is_par(num):
if(num % 2 == 0):
return f'{num} is a par number'
return None
my_list = [1, 3, 2, 5, 6, 7, 9, 10, 16, 4]
for num in my_list:
num_is_par = is_par(num)
if num_is_par is not None:
print(num_is_par)
Tenemos una función que retorna un mensaje si un número es par y si no lo es devuelve None. Después creamos un listado de números random pares e impares y por último ejecutamos un ciclo for para recorrer la lista. Con la función is_par comprobamos si el valor es par y si la función no ha retornado None mostramos el mensaje.
Pues bien, con el operador Walrus podríamos reescribir el ciclo for de forma que quedaría así:
for num in my_list:
if(num_is_par := is_par(num)) is not None:
print(num_is_par)
En este caso, asignamos el valor a la variable num_is_par desde el propio if y comprobamos que no es igual a None y si cumple la condición mostramos el mensaje.
Operador Walrus en List Comprehensions
También podemos utilizar este operador con List Comprehensions. Vamos a verlo con un ejemplo y ahora lo explico:
def is_par_new(num):
if(num % 2 == 0):
return num
return None
my_list = [1, 3, 2, 5, 6, 7, 9, 10, 16, 4]
par_numbers = [num_is_par_new for num in my_list if (num_is_par_new := is_par_new(num)) is not None]
print(par_numbers)
En este caso hemos definido una nueva función que nos retornará el número si es par y None si no lo es. Después definimos una lista con números pares e impares y por último definimos una variable que contendrá una lista con el resultado de nuestra List Comprehension.
La variable num_is_par_new será la variable en la que guardaremos el número par, después recorremos la lista y en la condición if comprobamos y asignamos el valor con el operador Walrus si no retorna None.
Conclusiones
El uso del operador Walrus puede ser interesante, ya que como vemos en los primeros ejemplos, el operador Walrus hace que nuestro código quede más compacto y limpio. Sin embargo, el primer código puede ser legible por cualquier programador ya sea Junior o Senior y el segundo puede llevar a la confusión a quien no conozca este operador así que dejo en vuestras manos si decidís usarlo o no.
Espero que este post te ayude y como siempre, te recomiendo seguirme en Twitter para estar al tanto de los nuevo contenido. Ahora también puedes seguirme en Instagram donde estoy subiendo tips, tutoriales en vídeo e información sobre herramientas para developers.
Por último os dejo mi guía para aprender a trabajar con APIs donde explico todo el funcionamiento de una API, el protocolo HTTP y veremos como construir una API con arquitectura REST.
Nos leemos 👋.