Funciones lambda en Python
⏱ Dedicación recomendada: 0 minutos
Esto considera el contenido visible y relevante, e ignora texto colapsado o marcado como opcional.
r8vnhill/
En Python, las funciones lambda también son funciones anónimas que pueden definirse en una sola línea. Son útiles cuando se requiere una función simple sin necesidad de declararla explícitamente con def
. Sin embargo, en comparación con Kotlin, las lambdas en Python tienen varias limitaciones.
📌 Definición y sintaxis
En Python, una función lambda se define con la palabra clave lambda
, seguida de los argumentos y una única expresión que se evalúa y devuelve como resultado.
add = lambda a, b: a + b
print(add(3, 4)) # Output: 7
🔍 Diferencias con Kotlin
Aspecto | Python | Kotlin |
---|---|---|
Palabra clave | lambda | {} para la expresión, fun para funciones anónimas |
Retorno implícito | Sí, siempre devuelve el resultado de la expresión | Sí, última expresión se devuelve implícitamente |
Bloques múltiples | ❌ No permite múltiples expresiones | ✅ Sí, permite múltiples expresiones dentro de una función anónima |
Tipos de parámetros | No se especifican (dinámico) | Se pueden definir explícitamente |
Acceso a variables externas | Solo permite acceso a variables no reasignadas | Permite capturas de contexto mutable |
Las funciones lambda en Python no pueden contener múltiples sentencias. Solo admiten una única expresión.
📏 Restricciones en Python
Python restringe las lambdas a una sola expresión, lo que significa que no se pueden definir múltiples líneas dentro de una lambda.
# Esto dará error en Python
lambda a, b: c = a + b # SyntaxError
Para definir funciones más complejas en Python, es necesario utilizar def
:
def add(a, b):
c = a + b # Ahora es válido
return c
🔹 En Kotlin, se pueden tener múltiples expresiones en una función anónima sin necesidad de return
, lo que hace que las funciones lambda sean más flexibles.
📦 Funciones de Orden Superior
Las funciones lambda en Python son ampliamente usadas en funciones de orden superior, como map
, filter
y reduce
.
🔹 map
con lambda en Python
numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x ** 2, numbers))
print(squared) # Output: [1, 4, 9, 16, 25]
📌 Diferencia con Kotlin:
- Python usa
map(función, iterable)
, mientras que en Kotlin se usa.map { it * it }
. - En Kotlin, los tipos pueden inferirse o definirse explícitamente.
🔎 Captura de Variables en Lambdas
Las funciones lambda en Python capturan variables por referencia, lo que puede causar problemas inesperados.
multipliers = [lambda x: x * i for i in range(5)]
print(multipliers ) # Output: 8 en vez de 0
📌 ¿Qué está pasando?
El valor de i
se comparte entre todas las lambdas, lo que puede llevar a resultados inesperados. Para solucionar esto:
multipliers = [lambda x, i=i: x * i for i in range(5)]
print(multipliers ) # Output: 0 (correcto)
✅ En Kotlin, las lambdas pueden capturar variables mutables sin problemas.
🚀 Expresiones Lambda en Estructuras de Control
❌ Python NO permite usar lambdas en if
, while
, for
directamente
En Python, no es posible utilizar una lambda directamente en una estructura de control como if
o for
.
# Esto dará error
if lambda x: x > 10:
print("Mayor que 10")
🔹 Alternativa en Python:
check = lambda x: x > 10
if check(15):
print("Mayor que 10") # Output: Mayor que 10
✅ En Kotlin, sí se pueden usar directamente dentro de estructuras de control.
🏆 ¿Cuándo usar lambdas en Python?
🔹 Casos donde sí es recomendable:
- Pasar funciones simples a
map
,filter
,sorted
,reduce
. - Definir pequeñas funciones en una sola línea.
🔹 Casos donde no es recomendable:
- Funciones que requieren más de una línea de código.
- Casos donde la legibilidad se vea afectada.
📌 Conclusión:
- Python ofrece funciones lambda sencillas pero con restricciones.
- Kotlin tiene una sintaxis más flexible que permite expresiones múltiples y una mejor integración con estructuras de control.
🎯 Resumen Final
Característica | Python | Kotlin |
---|---|---|
Lambdas en una línea | ✅ Sí | ✅ Sí |
Lambdas con múltiples expresiones | ❌ No | ✅ Sí |
Uso con if y for | ❌ No permitido | ✅ Sí, sin restricciones |
Captura de variables mutables | ⚠️ Posible problema | ✅ Sin problemas |
Inferencia de tipos | ⚠️ Dinámico, puede fallar | ✅ Sí, más control sobre los tipos |
Uso en funciones de orden superior | ✅ Sí (map , filter ) | ✅ Sí (map , filter ) |
✅ Si necesitas una lambda rápida y sencilla, Python es suficiente.
✅ Si buscas más flexibilidad y poder en expresiones complejas, Kotlin ofrece una mejor alternativa.
📚 Referencias
- Python Software Foundation. (2024). Lambda Expressions. Retrieved from docs.python.org
- Jemerov, D., & Isakova, S. (2017). Kotlin in Action. Manning Publications.
- Luciano Ramalho. (2015). Fluent Python. O’Reilly Media.
Esta lección resalta las ventajas y limitaciones de cada lenguaje. Python es más restrictivo con las lambdas, mientras que Kotlin permite expresiones más avanzadas. 🚀