Anuncio

Las Lambdas en Python son una de las características más útiles, importantes e interesantes para conocer. Desafortunadamente, también son fáciles de entender mal y equivocarse.

En este artículo, explicaremos todo lo que necesita saber sobre estas misteriosas funciones, cómo usarlas y por qué son útiles.

Antes de sumergirse en estos ejemplos prácticos, es posible que desee configurar un entorno virtual de Python Aprenda a usar el entorno virtual de PythonYa sea que sea un desarrollador experimentado de Python o que recién esté comenzando, aprender a configurar un entorno virtual es esencial para cualquier proyecto de Python. Lee mas . Si ni siquiera quieres hacer eso, entonces al menos deberías probar estos ejemplos con un shell interactivo de Python en línea Pruebe Python en su navegador con estos shells interactivos en línea gratuitosYa sea que esté revisando estos ejemplos de Python o revisando los conceptos básicos de matrices y listas, puede probar el código directamente en su navegador. Aquí están los mejores intérpretes de Python en línea que hemos encontrado. Lee mas .

¿Qué es una Lambda en Python?

Una lambda es simplemente una forma de definir una función en Python. A veces se los conoce como "operadores lambda" o "funciones lambda".

Si ha usado Python anteriormente, probablemente haya definido sus funciones usando el def palabra clave, y hasta ahora ha funcionado bien para usted. Entonces, ¿por qué hay otra forma de hacer lo mismo?

La diferencia es que las funciones lambda son anónimas. Es decir, son funciones que no necesitan ser nombradas. Se utilizan para crear funciones pequeñas y únicas en los casos en que una función "real" sería demasiado grande y voluminosa.

Las lambdas devuelven un objeto de función, que se puede asignar a una variable. Las lambdas pueden tener cualquier número de argumentos, pero solo pueden tener una expresión. No puede llamar a otras funciones dentro de lambdas.

El uso más común para las funciones lambda es en el código que requiere una función simple de una línea, donde sería excesivo escribir una función normal completa. Esto se trata con mayor detalle a continuación, en "¿Qué pasa con el mapa, filtro y reducción?".

Cómo usar Lambdas en Python

Antes de ver una función lambda, veamos una función súper básica definida de la manera "tradicional":

def add_five (número): número de retorno + 5 print (add_five (número = 4))
cómo usar las funciones de lamba en python

Esta función es muy básica, pero sirve para ilustrar lambdas. El tuyo puede ser más complejo que esto. Esta función agrega cinco a cualquier número que se le pase a través de número parámetro.

Así es como se ve como una función lambda:

add_five = número lambda: número + 5 print (add_five (número = 4))
cómo usar las funciones de lamba en python

En lugar de usar def, la palabra lambda es usado No se requieren corchetes, pero las palabras que siguen al lambda Las palabras clave se crean como parámetros. Los dos puntos se usan para separar los parámetros y la expresión. En este caso, la expresión es número + 5.

No hay necesidad de usar el regreso palabra clave: la lambda lo hace automáticamente.

Así es como crearía una función lambda con dos argumentos:

add_numbers_and_five = lambda number1, number2: number1 + number2 + 5 print (add_numbers_and_five (number1 = 4, number2 = 3))
cómo usar las funciones de lamba en python

Si aún no está seguro del punto de las lambdas, la siguiente sección se sumergirá y lo ayudará a ver la luz.

Python Lambdas con mapa, filtro y reducción

La biblioteca principal de Python tiene tres métodos llamados mapa, reduciry filtrar. Estos métodos son posiblemente las mejores razones para usar las funciones lambda.

los mapa La función espera dos argumentos: una función y una lista. Toma esa función y la aplica a cada elemento de la lista, devolviendo la lista de elementos modificados como un objeto de mapa. los lista La función se utiliza para convertir el objeto de mapa resultante nuevamente en una lista.

Aquí se explica cómo usar el mapa sin una lambda:

lista1 = [2, 4, 6, 8] print (list1) def add_five (número): número de retorno + 5 new_list = list (map (add_five, list1)) print (new_list)
cómo usar las funciones de lamba en python

Esta función de mapa es bastante útil, pero podría ser mejor. el add_five La función se pasa como argumento, pero ¿qué sucede si no desea crear una función cada vez que usa el mapa? ¡Puedes usar una lambda en su lugar!

Así es como se ve ese mismo código, solo con la función reemplazada por una lambda:

lista1 = [2, 4, 6, 8] print (list1) new_list = list (mapa (lambda x: x + 5, list1)) print (new_list)
cómo usar las funciones de lamba en python

Como puedes ver, todo add_five La función ya no es necesaria. En cambio, la función lambda se usa para mantener las cosas ordenadas.

Con el filtrar función, el proceso es muy parecido. Filtrar toma una función y la aplica a cada elemento de una lista y crea una nueva lista con solo los elementos que causaron que la función devuelva True.

Primero, sin lambdas:

números = [1, 4, 5, 10, 20, 30] print (números) def Greater_than_ten_func (número): if number> 10: return True else: return False new_numbers = list (filter (greater_than_ten_func, numbers)) print (new_numbers)
cómo usar las funciones de lamba en python

No hay nada malo con este código, pero se está volviendo un poco largo. Veamos cuántas líneas puede eliminar una lambda:

números = [1, 4, 5, 10, 20, 30] print (números) nuevos_números = lista (filtro (lambda x: x> 10, números)) print (nuevos_números)
cómo usar las funciones de lamba en python

La función lambda ha reemplazado la necesidad de todo Greater_Than_ten_func! Y lo ha hecho en cinco palabras simples. Es por eso que las lambdas son poderosas: reducen el desorden para tareas simples.

Finalmente, veamos reducir. Reducir es otra función genial de Python. Aplica un cálculo continuo a todos los elementos de una lista. Puede usar esto para sumar un total de suma o multiplicar todos los números:

de importación de functools reducir números = [10, 20, 30, 40] print (números) def verano (a, b): devuelve el resultado a + b = reducir (verano, números) imprimir (resultado)
cómo usar las funciones de lamba en python

Este ejemplo necesita importar reducir desde el functools módulo, pero no se preocupe, el módulo functools es parte de la biblioteca central de Python.

La historia es muy parecida a una lambda, no hay necesidad de una función:

de importación de functools reducir números = [10, 20, 30, 40] print (números) resultado = reducir (lambda a, b: a + b, números) imprimir (resultado)
cómo usar las funciones de lamba en python

Cosas a tener en cuenta con Python Lambdas

Estos ejemplos han mostrado cuán fáciles son las funciones lambda, junto con el mapa, el filtro y la reducción, desde la biblioteca central de Python. Aún así, hay algunos usos en los que las funciones lambda no ayudan.

Si está haciendo algo más que una tarea básica, o desea llamar a otros métodos, use una función normal. Las lambdas son excelentes para funciones anónimas, pero solo deben tener una sola expresión. Si su lambda comienza a verse como una expresión regular, entonces probablemente sea hora de refactorizar a un método dedicado.

Para más consejos, consulte nuestro guía de programación orientada a objetos en Python Una guía para principiantes a la programación orientada a objetos de PythonPara aprovechar al máximo las fortalezas de Python, querrás aprender cómo funciona Python con la programación orientada a objetos (OOP). Lee mas y mira nuestro Guía de preguntas frecuentes para principiantes de Python Las preguntas más frecuentes sobre la programación de PythonEn este artículo, lo guiaremos a través de todo lo que necesita saber sobre Python como principiante. Lee mas .

Joe se graduó en Ciencias de la Computación de la Universidad de Lincoln, Reino Unido. Es un desarrollador de software profesional, y cuando no está volando drones o escribiendo música, a menudo se lo puede encontrar tomando fotos o produciendo videos.