Lambdas

Python SELF ES
Nivel 13 , Lección 2
Disponible

2.1 Definición de funciones lambda

Las funciones lambda, también conocidas como funciones anónimas, son funciones compactas de una línea sin nombre que pueden ser creadas usando la palabra clave lambda.

A diferencia de las funciones comunes, definidas usando def, las funciones lambda son creadas al vuelo y usualmente se utilizan para operaciones simples que se ejecutan en una línea.

La sintaxis de una función lambda consiste en la palabra clave lambda, seguida de los argumentos, dos puntos y una expresión:

 
lambda argumentos: expresión
    

Las funciones lambda pueden tener cualquier cantidad de argumentos, pero pueden contener solo una expresión. El valor de esta expresión se devuelve automáticamente.

Ejemplos:

Función lambda Función común

square = lambda x: x ** 2
print(square(5))  # Salida: 25
                    

def square(x):
    return x ** 2
print(square(5))  # Salida: 25
                

sum = lambda a, b: a + b
            

def sum(a, b):
    return a + b
                

up = lambda s: s.upper()
            

def up(s):
    return s.upper()
                    

2.2 Uso de funciones lambda

Las funciones lambda a menudo se usan en combinación con otras funciones, como map(), filter() y sorted(), así como argumentos para otras funciones.

Uso con map()

La función map() aplica una función dada a cada elemento de un objeto iterable y devuelve un iterador con los resultados. Las funciones lambda son ideales para usar con map(), ya que permiten definir concisamente una función para transformar elementos.


numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers)  # Salida: [1, 4, 9, 16, 25]
        

Uso con filter()

La función filter() devuelve un iterador que consiste en elementos de un objeto iterable para los cuales una función dada devuelve True. Las funciones lambda permiten definir rápidamente una condición para el filtrado.


numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # Salida: [2, 4, 6, 8, 10]

Uso con sorted()

La función sorted() ordena los elementos de un objeto iterable. Las funciones lambda pueden ser usadas para definir un criterio de orden personalizado usando el argumento key.


words = ["banana", "apple", "cherry", "date"]
sorted_words = sorted(words, key=lambda x: len(x))
print(sorted_words)  # Salida: ['date', 'apple', 'banana', 'cherry']
        

Funciones lambda en expresiones

Las funciones lambda pueden usarse dentro de otras expresiones, como comprensiones de listas y generadores de diccionarios.


pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
pairs.sort(key=lambda pair: pair[1])
print(pairs)  # Salida: [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]
        

2.3 Limitaciones de las funciones lambda

Las funciones lambda tienen varias limitaciones en comparación con las funciones comunes:

Limitación de expresiones:

Las funciones lambda solo pueden contener una expresión y no pueden incluir operadores complejos como bucles o operadores de control de flujo (por ejemplo, if, else, etc.).

Falta de documentación:

Las funciones lambda no pueden contener un string de documentación (docstring), lo cual hace difícil documentar su funcionalidad.

Capacidades de depuración limitadas:

Debido a la falta de nombre y documentación, las funciones lambda son más difíciles de depurar en comparación con las funciones comunes.

Ejemplo de limitación de las funciones lambda

Intentar usar múltiples expresiones dentro de una función lambda resultará en un error de sintaxis:


# Este código generará un error
invalid_lambda = lambda x: x ** 2; print(x)
        
    
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION