Funciones lambda en Python. ¿Qué son? ¿Debo utilizarlas?

Veamos qué son y en que caso resultan útiles las interesantes functiones lambda en Python. ¡También los mayores errores en su uso!

Serpiente pitón dibujada de color naranja delante de una pantalla de ordenador.

Funciones lambda en Python


¿Qué es una función Lambda y para que las usamos en Python?

Como ya sabemos, en Python las funciones se definen con la palabra reservada def. Pero, ¿y si no siempre crear una función nombrada es necesario? ¿Qué pasa si solo queremos aplicar una función simple sin declararla previamente?

Para ello, podemos hacer uso de las funciones lambda o funciones anónimas. Son aquellas que no hemos declarado e identificada previamente, y para ello usamos `lambda. En el siguiente apartado veremos un ejemplo práctico.

Sin embargo, cabe destacar, que como las funciones map, filter y reduce cada vez son menos usadas en favor de comprensión de listas (list comprehension) y los generadores, el uso de las funciones lambda ha quedado bastante reducido.


Ejemplo de función lambda en las transformaciones Pandas y Polars

Como comentamos, la evolución del lenguaje Python, sobre todo desde el 2.x a 3.x, ha ido arrinconando el uso de las funciones anónimas. Quizá donde más se sigan usando es en notebooks o en librerías de tratamiento de DataFrames como Polars, Pandas o pySpark a la hora de hacer simples modificaciones sobre las columnas con sus respectivos métodos apply, aunque suele no ser la opción con mejor rendimiento ya que por ejemplo Polars recomienda encarecídamente que si existe alguna función nativa, su rendimiento será mejor al ejecutarse en Rust y ser paralelizable.

Veamos un ejemplo de cómo utilizarlo:

import pandas as pd
import numpy as np

df = pd.DataFrame([[4, 9, 10]] * 3, columns=["A", "B", "C"])

df["suma_pares_por_fila"] = df.apply(lambda x: np.sum(x%2^1), axis=1)

De esta manera tenemos los pares, los invertimos con ^1 (operador XOR, cuidado con confundir con el exponente **) para que intercambiar los 0s por 1s y viceversa. Luego sumamos el array con np.sum() para contabilizar el total de pares por fila.


Errores comunes a la hora de trabajar con expresiones Lambda en Python

Usos incorrectos

El uso indebido de las expresiones lambda puede provocarnos diferentes problemas en el código de nnuestro proyecto. Si por ejemplo las sobreusamos, cuando una función standar con un nombre autodescriptivo hubiese aportado mayor claridad, puede volver nuestro código más complejo de mantener. Especialmente cuando las operaciones son más complejas que una simple línea de código.

Mientras que las funciones lambda sobre todo puede ayudarnos en proyectos pequeñoos, notebooks y tareas concisas, su uso en proyectos de gran escala compromete también la futura mantenibilidad del código. Python hace un especial énfasis en la legibilidad, por lo que en las ocasiones donde una funcion nombrada pueda aportar mayor claridad, su uso será preferido.


Creencias erroneas sobre las funciones Lambda

Dado que son más concisas y no son nombradas, mucha gente piensa que son más rápidas en ejecutar. Realmente si analizamos el código fuente que se ejecuta en una función normal y en una lambda, vemos que es el mismo.

import dis

def _(x):
    return f(x, 30)

dis.dis(_)
  2           0 LOAD_GLOBAL              0 (f)
              2 LOAD_FAST                0 (x)
              4 LOAD_CONST               1 (30)
              6 CALL_FUNCTION            2
              8 RETURN_VALUE

dis.dis(lambda x: f(x, 30))
  1           0 LOAD_GLOBAL              0 (f)
              2 LOAD_FAST                0 (x)
              4 LOAD_CONST               1 (30)
              6 CALL_FUNCTION            2
              8 RETURN_VALUE

Por ello, nunca las usaremos por performance de nuestro código.

Tampoco parece buena idea usar funciones lambda para cómputos que vamos a reusar. En estos casos será mejor crear una función o un objeto con estas funcionalidades.

Por último, hay que tener en cuenta que las funciones lambda tienen su propio scope, pero también acceden al entorno desde el que se las llama y el global, como cualquier otra función. Habrá que tener esto en cuenta para evitar comportamientos indeseados de la función.

Las directrices sugieren que las funciones lambda deben utilizarse con moderación y solo cuando realmente conduzcan a un código más claro. Es importante valorar su uso en situaciones específicas para mantener la claridad y eficiencia del código.


Mantente al día de las novedades de Python

Espero que esta publicación te haya brindado una comprensión clara y práctica sobre las funciones lambda en Python. Recuerda que, aunque son poderosas, las funciones lambda deben usarse con prudencia para mantener la legibilidad del código. ¡Sigue practicando y pronto las usarás de manera adecuada mientras programas en Python!

Si deseas mantenerte actualizado y no perderte nada…

Python
Carlos Vecina
Carlos Vecina
Senior Data Scientist at Jobandtalent

Senior Data Scientist at Jobandtalent | AI & Data Science para aportar valor en la empresa

Relacionado