Funciones lambda de Python con ejemplos prácticos

Publicado: 2021-06-21

Las funciones lambda de Python son aquellas funciones que son pequeñas y se definen sin un nombre. En Python, la palabra clave 'def' se usa para definir una función. Sin embargo, en el caso de funciones anónimas, la palabra clave 'lambda' se usa para definir esas funciones. Por lo tanto, el nombre “funciones lambda. Puede haber un nombre o no asignado a las funciones.

En comparación con las funciones regulares en python, las funciones lambda son cortas.

Se han añadido funciones lambda a la sintaxis de lenguajes de programación como Python, Java, C++, C#, etc. que tienen en su sintaxis. Si bien se usa como un concepto central en Languages ​​of ML o LISP.

El artículo se centrará en el concepto de funciones lambda de python y su uso.

Según el tipo de lenguaje de programación, las funciones lambda se pueden usar indistintamente con los siguientes términos:

  • Funciones anónimas
  • funciones lambda
  • expresiones lambda
  • abstracciones lambda
  • forma lambda
  • Literales de función

Tabla de contenido

Cálculo lambda

El cálculo lambda es un modelo de cálculo basado en el cual se construyen las expresiones lambda. El cálculo lambda se basa en la abstracción pura y fue formalizado por Alonzo Church. También conocido como abstracciones lambda, se refiere al modelo original creado por Alonzo Church.

Cualquier cálculo puede ser codificado por este concepto.

Sintaxis de la función lambda:

La siguiente sintaxis se usa al usar las funciones lambda en python.

argumentos lambda: expresión

Puede haber cualquier cantidad de argumentos en la función lambda en python . Pero las funciones solo pueden tener una expresión. Esta expresión se evalúa primero y luego se devuelve. El uso de funciones lambda se encuentra dondequiera que exista un requisito de los objetos de función.

Considerando un caso en el que una función anónima con dos argumentos se define con lambda pero no está vinculada a ninguna variable:

lambda x, y: x + y

Aquí, la función toma los dos argumentos y se devuelve la suma.

Hay algunas características que muestra una función lambda:

  • No puede haber declaraciones en el cuerpo de la función lambda, pero solo puede contener expresiones.
  • El código de ejecución es solo una línea.
  • Las anotaciones de tipo no son compatibles con la función lambda en python .
  • Se permite la invocación inmediata.

No se pueden usar declaraciones

Como se mencionó, no puede haber declaraciones al definir funciones lambda. Si el usuario usa declaraciones como pasar, devolver, aumentar o afirmar, habrá una excepción SyntaxError. El resultado de la excepción se puede mostrar a través del siguiente código

Fuente

En el código anterior, se produjo un error de sintaxis cuando se analizó el código que contenía la declaración de afirmación en el cuerpo de la función lambda.

la función lambda contiene solo una expresión

A diferencia de todas las funciones normales estándar en python, una función lambda en python puede contener solo una expresión. El cuerpo de la función lambda puede tener la expresión extendida mediante el uso de varias líneas entre paréntesis. Sin embargo, todavía permanece como una sola expresión.

Fuente

La cadena "impar" se devuelve cuando hay un argumento "impar", mientras que la cadena "par" se devuelve cuando hay un argumento "par". Se usan dos líneas en el código anterior, ya que están entre paréntesis. Pero permanece como una sola expresión.

Escriba anotaciones

Con la disponibilidad de "sugerencias de tipo" en python, ahora se prefieren las funciones normales a las funciones lambda en python. Con la disponibilidad de herramientas como mypy, pyre, etc., el error de tipo puede detectarse con full_name(). El error de sintaxis asociado con la función lambda se genera durante el tiempo de ejecución.

Ejecución de funciones inmediatamente invocadas (IIFE)

La función no se puede utilizar fuera de un intérprete de Python. La definición de la expresión lambda en python se puede pasar a funciones de orden superior como map(), etc.

Argumentos en una función lambda

Se admiten diferentes formas en las expresiones lambda de python para el paso de los argumentos como:

  • Argumentos posicionales
  • Argumentos con nombre también conocidos como argumentos de palabras clave
  • Lista de variables de argumentos a la que también se hace referencia como varargs.
  • Lista de variables de argumentos de palabras clave
  • Argumentos con solo palabras clave.

Decoradores en una expresión Python Lambda

El decorador se puede definir como una implementación de patrón que permite agregar un comportamiento a una clase o función. La sintaxis de @decorator se usa como prefijo de una función para expresar un decorador en python

Solo con el argumento 'Python', se imprime la función_decorada() . El comportamiento adicional que se imprime es 'Función de llamada 'función_decorada'.

Python permite agregar un decorador a una función lambda, aunque no se requiere el uso de la sintaxis @decorator . El decorador actúa como una función que llama a la función lambda.

<lambda> aparece donde se identifica la función lambda. Mientras que, en el caso de una función normal, es decir, add_two, se identifica claramente.

Para fines de depuración, las funciones lambda se pueden decorar de esta manera.

Cierre

Closure() en python se define como una función donde las variables libres, excepto los parámetros que se usan en la función, están vinculados a valores específicos que se definen dentro del alcance de la función. Podemos llamar a los cierres desde cualquier lugar. Las funciones lambda en python pueden actuar como cierres de la misma manera que las funciones normales actúan como cierres.

Uso de funciones lambda

  • Siempre que requerimos usar una función por un tiempo más corto, se usan las funciones lambda en ese caso.
  • Para el paso de funciones a una función de orden superior se aplican funciones lambda. Las funciones se pasan como argumentos a aquellas funciones de orden superior.
  • Las funciones lambda en python se pueden usar con otras funciones integradas como map(), etc.

Prueba de funciones lambda

Mediante el uso de los módulos doctest y unittest, se pueden probar las funciones lambda en python:

  • Los módulos Unittest prueban las funciones lambda como las funciones regulares.
  • En el caso del módulo doctest, se extrae el código python de docstring , para la ejecución de la prueba. La sintaxis de la función lambda no permite la cadena de documentación . Pero se puede asignar una cadena al elemento _doc_ de la lambda que se está nombrando.

Ejemplos de funciones Python Lambda

En el siguiente código, se define una función con el nombre "identidad" donde se devuelve un argumento. Se define como una función estándar de python mediante el uso de la palabra clave "def".

>>> def identidad (x);

….. volver x

Aquí, x es tomado como argumento por la función “identidad” y al ser invocado devuelve el argumento.

Escribir el mismo código usando lambda será:

lambda x: x

La expresión consta de tres partes: Lambda como palabra clave, x que luego es una variable vinculada y X que es el cuerpo del código.

  • La variable vinculada se refiere al argumento que se pasa a una función lambda. Sin embargo, las variables libres son aquellas que no están vinculadas y pueden referenciarse en el cuerpo de la expresión. Una constante puede ser una variable libre o variables definidas en el ámbito de la función.

La expresión anterior se puede elaborar como

>>> lambda x: x + 1

Aquí, la función está sumando 1 al argumento. La función se puede agregar a un argumento mientras rodea tanto la función como el argumento mediante el uso de paréntesis.

>>>(lambda x: x + 1)(2)

3

Para calcular el valor de una expresión, se aplica una estrategia de reducción. Al igual que en el ejemplo anterior, la variable vinculada "x" se puede reemplazar con el argumento 2.

(lambda x: x + 1)(2) = lambda 2: 2 + 1

= 2 + 1

= 3

La función lambda es una expresión, se puede nombrar y el código anterior se puede volver a escribir como

>>> añadir_uno = Lambda x : x + 1

>>> agregar_uno(2)

3

Esto es equivalente a escribir:

def añadir_uno(x):

volver x + 1

Las funciones lambda toman un único argumento. Además, al definir la función lambda en python , no hay paréntesis alrededor de las funciones.

Para pasar más de un argumento a una función lambda de python , los argumentos se enumeran y separan mediante el uso de una coma (,). No debe haber paréntesis al enumerar los argumentos. A continuación se muestra un ejemplo de funciones de varios argumentos:

Aquí, la función lambda toma dos argumentos bajo nombre_completo. La función devuelve una cadena que interpola el primero y el último parámetro. El código muestra que al definir las funciones lambda, no se utilizó ningún paréntesis. La llamada de la función lambda sigue la misma forma que la de una función estándar en python, es decir, usando paréntesis que rodean los argumentos.

Funciones lambda de Python con filtro ()

En python, la función filter() , acepta un argumento como una lista y una función. A través de los elementos de la lista, se puede llamar a la función que devuelve una nueva lista de elementos. La función para esta lista recién creada se evalúa como True .

A continuación se muestra un ejemplo de la función filter() que se utiliza para filtrar números pares contenidos en una lista.

Fuente

La salida generada por el programa es la nueva lista: [4, 6, 8, 12].

Función lambda de Python con mapa ()

Una lista y una función se toman como argumento en la función python map(). Todos los elementos contenidos en la lista llaman a la función que devuelve una lista recién creada con los elementos que devuelve la función.

Conclusión

Las funciones lambda de Python son aquellas funciones que tienen una sola línea y se declaran sin nombre, es decir, una función anónima. Se pueden pasar varios números de argumentos a una función lambda que solo puede tener una expresión. A veces, la función lambda se puede pasar a otras funciones como argumento. La función, cuando se define con la palabra clave 'def' en python, puede comportarse como una función normal.

El artículo, por tanto, explicaba los conceptos de funciones lambda en python, su aplicación con otras funciones y también algunos ejemplos. Si está más interesado en adquirir experiencia en el lenguaje de programación y dominar sus habilidades de codificación, puede consultar el curso " Programa ejecutivo de PG en ciencia de datos " que ofrece upGrad . Está especialmente diseñado para todos los profesionales de nivel de entrada entre 21 y 45 años de edad que desean alcanzar sus habilidades de codificación en ciencia de datos. Si estás dispuesto a dar un paso hacia tus sueños, acércate y echa un vistazo a los beneficios del curso. Con proyectos prácticos de la industria, el curso proporcionado por IIIT-B está diseñado para satisfacer sus necesidades y prepararlo para las próximas industrias principales.

¿Cuál es la diferencia entre una función normal y una función lambda?

Sabemos que una función en Python se define usando la palabra clave def. De manera similar, una función lambda se define utilizando la palabra clave lambda. Considere el siguiente ejemplo para comprender profundamente la diferencia entre los dos:
# Función normal def sq(x): return x*x # Función lambda lambda_sq = lambda x: x*x # Llamar a la función normalmente # definida print(sq(10)) # usar la función lambda print(lambda_sq(10)) }
El ejemplo anterior ilustra 2 funciones que calculan el cuadrado de un número. Sin lambda, tenemos que crear una función sq(x), y luego devolver el cuadrado. Por otro lado, con lambda, toda la función se ha reducido a una sola línea. Lambda no requiere una declaración de devolución.