¿Qué son las funciones lambda en Python?
Las funciones lambda son una forma compacta y elegante de definir funciones directamente dentro de expresiones. En Python, también se conocen como funciones lambda o funciones anónimas, ya que se crean sin nombre y se usan localmente, en lugares donde no tiene sentido definir una función completa con la palabra clave def.
Las funciones lambda destacan por su simplicidad y facilidad de uso. Se utilizan a menudo junto con funciones de orden superior como map(), filter() y sorted(). También son muy comunes en bibliotecas populares como pandas, NumPy, Flask, Tkinter y muchas otras herramientas del ecosistema Python.
Sintaxis básica de las funciones lambda
Estructura de una expresión lambda
La sintaxis de una función lambda en Python es la siguiente:
lambda argumentos: expresión
Donde:
- argumentos — lista de parámetros de la función, similar a una función normal
- expresión — una sola expresión cuyo resultado se devuelve como valor de la función
Características clave de las funciones lambda
Las funciones lambda en Python tienen varias propiedades importantes:
- Siempre devuelven automáticamente el resultado de la expresión
- No contienen la palabra clave return
- El resultado de evaluar la expresión es el valor de retorno
- Solo admiten una expresión en el cuerpo de la función
Ejemplos prácticos de expresiones lambda
Operaciones matemáticas simples
# Calcular el cuadrado de un número
square = lambda x: x ** 2
print(square(5)) # 25
# Sumar dos números
add = lambda a, b: a + b
print(add(3, 7)) # 10
# Verificar si un número es par
is_even = lambda x: x % 2 == 0
print(is_even(4)) # True
Lambda con expresiones condicionales
# Determinar el valor máximo
max_value = lambda x, y: x if x > y else y
print(max_value(10, 15)) # 15
# Clasificar números
categorize = lambda x: "positivo" if x > 0 else "negativo" if x < 0 else "cero"
Comparación entre lambda y funciones normales
Diferencias clave
| Característica | Función normal (def) | Función lambda |
|---|---|---|
| Sintaxis | def func(x): return x * 2 | lambda x: x * 2 |
| Número de expresiones | Múltiples | Solo una |
| Nombre | Tiene nombre | Generalmente anónima |
| Ámbito de uso | Reutilización | Operaciones únicas |
| Documentación | Soporta docstring | No soporta |
| Anotaciones de tipo | Soporta | Soporte limitado |
Cuándo usar lambda
Las funciones lambda son más efectivas en los siguientes casos:
- Operaciones simples de una sola línea
- Usarse como argumentos de otras funciones
- Cálculos temporales sin necesidad de reutilización
- Trabajar con funciones de orden superior
Uso de lambda en funciones de orden superior
Función map()
La función map() aplica una función dada a cada elemento de un iterable:
numbers = [1, 2, 3, 4, 5]
squares = list(map(lambda x: x**2, numbers))
print(squares) # [1, 4, 9, 16, 25]
# Convertir cadenas a mayúsculas
words = ["hola", "mundo", "python"]
uppercase = list(map(lambda s: s.upper(), words))
print(uppercase) # ['HOLA', 'MUNDO', 'PYTHON']
Función filter()
Filter() crea un iterador con los elementos que cumplen una condición:
# Filtrar números pares
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) # [2, 4, 6]
# Filtrar palabras con más de 3 letras
words = ["sol", "casa", "árbol", "luna"]
long_words = list(filter(lambda w: len(w) > 3, words))
print(long_words) # ['casa', 'árbol']