Función lambda de la gramática avanzada de Python
En Python, lambda
las funciones también se conocen como funciones anónimas, que son un atajo para definir funciones simples. lambda
Las funciones, como las funciones ordinarias, pueden recibir cualquier cantidad de argumentos, pero solo pueden tener una expresión. lambda
En este artículo, presentaremos las funciones de Python en detalle con abundantes ejemplos y explicaciones .
Sintaxis básica de las funciones lambda
lambda
La sintaxis básica de una función es la siguiente:
lambda arguments: expression
donde arguments
es uno o más parámetros y expression
es una expresión sobre esos parámetros. lambda
El valor de retorno de la función es expression
el valor de .
Por ejemplo, la siguiente lambda
función toma un argumento x
y devuelve x
el cuadrado:
square = lambda x: x ** 2
print(square(5)) # Output: 25
Propósito de la función lambda
lambda
Las funciones generalmente se usan cuando se necesita una función pequeña, pero no def
desea definir una función. Por ejemplo, lambda
las funciones a menudo se usan como argumentos para funciones de orden superior como map()
y filter()
.
map(function, iterable)
Una función toma una función y un iterable, y devuelve un nuevo iterador que aplica la función a cada elemento del iterable. Por ejemplo, el siguiente código usa la sumamap()
para elevar allambda
cuadrado cada número en una lista:
numbers = [1, 2, 3, 4, 5]
squares = map(lambda x: x ** 2, numbers)
print(list(squares)) # Output: [1, 4, 9, 16, 25]
filter(function, iterable)
La función también toma una función y un objeto iterable, y devuelve unTrue
nuevo iterador que contiene todos los elementos para los que la función devuelve un valor. Por ejemplo, el siguiente código usafilter()
ylambda
para filtrar todos los números impares en una lista:
numbers = [1, 2, 3, 4, 5]
odds = filter(lambda x: x % 2 != 0, numbers)
print(list(odds)) # Output: [1, 3, 5]
funciones lambda y clasificación
lambda
Las funciones también se usan comúnmente en operaciones de clasificación en listas u otras estructuras de datos. Las funciones integradas de Python sorted()
y sort()
los métodos de lista proporcionan un key
parámetro opcional llamado, a través del cual podemos especificar una función para determinar la base para la clasificación.
Por ejemplo, supongamos que tenemos una lista cuyos elementos son diccionarios y queremos ordenar por el valor de una clave particular en el diccionario:
students = [
{
'name': 'John', 'grade': 90},
{
'name': 'Jane', 'grade': 88},
{
'name': 'Dave', 'grade': 92},
]
# 使用lambda函数,按照'grade'键进行排序
students_sorted = sorted(students, key=lambda x: x['grade'])
print(students_sorted)
# Output: [{'name': 'Jane', 'grade': 88}, {'name': 'John', 'grade': 90}, {'name': 'Dave', 'grade': 92}]
En este ejemplo, lambda x: x['grade']
la función toma un diccionario como entrada y devuelve el valor correspondiente a la clave 'calificación' en el diccionario. sorted()
La función usará este valor devuelto como base para ordenar.
Limitaciones de las funciones lambda
Aunque lambda
las funciones pueden ayudarnos a definir rápidamente funciones simples, también tienen algunas limitaciones:
lambda
Una función puede contener solo una expresión y no puede contener lógica compleja o múltiples declaraciones.lambda
Las funciones no pueden contener bloques de instrucciones, comoif/else
,for
,while
etc.lambda
Las funciones no pueden acceder a variables en ámbitos externos (a menos que esas variables sean globales).
A pesar de estas limitaciones, lambda
las funciones siguen siendo muy útiles cuando se desean funciones ligeras. Dominar lambda
el uso de funciones es de gran beneficio para mejorar sus habilidades de programación en Python.
función lambda y función de reducción
El functools
módulo de Python proporciona una reduce()
función que aplica una función binaria secuencial a todos los elementos de una secuencia, fusionando así las secuencias en una sola salida. Este tipo de operación suele ser muy común en los lenguajes de programación funcional, y también es un escenario común para las funciones lambda.
Por ejemplo, si queremos calcular el producto de todos los elementos de una lista, podemos usar la reduce()
función sum lambda:
from functools import reduce
numbers = [1, 2, 3, 4, 5]
product = reduce(lambda x, y: x * y, numbers)
print(product) # Output: 120
En este ejemplo, lambda x, y: x * y
la función toma dos argumentos y devuelve su producto. reduce()
Las funciones usan esta función para procesar secuencialmente los elementos de la lista para calcular su producto.
Ventajas y desventajas de las funciones lambda
Antes de terminar este artículo, resumamos las ventajas y desventajas de las funciones lambda.
ventaja:
- Concisión: las funciones lambda nos permiten definir funciones en una línea de código, haciendo que el código sea más conciso.
- Comodidad: las funciones lambda se pueden pasar directamente como parámetros a funciones de orden superior sin tener que definirlas de antemano.
- Adecuado para lógica simple: para funciones con lógica simple, el uso de funciones lambda es más intuitivo que las funciones definidas por definición.
defecto:
- Funcionalidad limitada: dado que las funciones lambda solo pueden tener una expresión, no se puede implementar una lógica compleja.
- Legibilidad: si se abusa de la función lambda o se usa para implementar una lógica más compleja, puede reducir la legibilidad del código.
función lambda y función de reducción
El functools
módulo de Python proporciona una reduce()
función que aplica una función binaria secuencial a todos los elementos de una secuencia, fusionando así las secuencias en una sola salida. Este tipo de operación suele ser muy común en los lenguajes de programación funcional, y también es un escenario común para las funciones lambda.
Por ejemplo, si queremos calcular el producto de todos los elementos de una lista, podemos usar la reduce()
función sum lambda:
from functools import reduce
numbers = [1, 2, 3, 4, 5]
product = reduce(lambda x, y: x * y, numbers)
print(product) # Output: 120
En este ejemplo, lambda x, y: x * y
la función toma dos argumentos y devuelve su producto. reduce()
Las funciones usan esta función para procesar secuencialmente los elementos de la lista para calcular su producto.
Ventajas y desventajas de las funciones lambda
Antes de terminar este artículo, resumamos las ventajas y desventajas de las funciones lambda.
ventaja:
- Concisión: las funciones lambda nos permiten definir funciones en una línea de código, haciendo que el código sea más conciso.
- Comodidad: las funciones lambda se pueden pasar directamente como parámetros a funciones de orden superior sin tener que definirlas de antemano.
- Adecuado para lógica simple: para funciones con lógica simple, el uso de funciones lambda es más intuitivo que las funciones definidas por definición.
defecto:
- Funcionalidad limitada: dado que las funciones lambda solo pueden tener una expresión, no se puede implementar una lógica compleja.
- Legibilidad: si se abusa de la función lambda o se usa para implementar una lógica más compleja, puede reducir la legibilidad del código.
Función lambda con múltiples parámetros
Todas las funciones que hemos visto antes toman lambda
solo uno o dos parámetros. Sin embargo, lambda
las funciones también pueden aceptar cualquier número de argumentos. Por ejemplo:
f = lambda x, y, z: x + y + z
print(f(1, 2, 3)) # Output: 6
Esta lambda
función toma tres parámetros y devuelve su suma.
Incluso puede usar argumentos variables (también conocidos como "varargs"):
f = lambda *args: sum(args)
print(f(1, 2, 3, 4, 5)) # Output: 15
Esta lambda
función toma cualquier número de argumentos y devuelve su suma.
funciones lambda y programación funcional
En la programación funcional, las funciones se consideran ciudadanos de primera clase y pueden asignarse a variables, pasarse como parámetros a otras funciones y devolverse como valores de otras funciones. Este paradigma de programación fomenta el uso de funciones puras sin efectos secundarios, así como funciones de orden superior como map()
, y .filter()
reduce()
lambda
Las funciones son una encarnación de la programación funcional en Python. Al combinar lambda
funciones y funciones de orden superior, podemos escribir código muy conciso y elegante.
Por ejemplo, el siguiente código usa la función map()
y lambda
para convertir todos los elementos de una lista en cadenas:
numbers = [1, 2, 3, 4, 5]
strings = map(lambda x: str(x), numbers)
print(list(strings)) # Output: ['1', '2', '3', '4', '5']
En general, lambda
las funciones son una característica muy poderosa en Python, que nos permite escribir código de manera más rápida y concisa. Sin embargo, también tenga en cuenta que si lambda
la lógica de la función es demasiado compleja, puede reducir la legibilidad del código. Por lo tanto, lambda
las funciones se utilizan mejor para implementar una lógica simple.
Argumentos predeterminados y argumentos de palabras clave
Al igual que las funciones normales, las funciones lambda pueden tener argumentos predeterminados y argumentos de palabras clave:
f = lambda x, y=2, *, z=3: x + y + z
print(f(1)) # Output: 6
print(f(1, 4, z=5)) # Output: 10
En este ejemplo, lambda
la función tiene dos parámetros posicionales x
y y
, y
con un valor predeterminado de 2. z
es un argumento de palabra clave con un valor predeterminado de 3.
funciones lambda y decoradores
Aunque en Python, los decoradores generalmente se def
definen usando una sintaxis, lambda
las funciones también se pueden usar para crear decoradores simples.
Por ejemplo, el siguiente código define un decorador que multiplica el resultado de una función por 2:
double_result = lambda f: lambda *args, **kwargs: 2 * f(*args, **kwargs)
@double_result
def add(x, y):
return x + y
print(add(1, 2)) # Output: 6
En este caso, double_result
un decorador que toma una función f
y devuelve una nueva función que devuelve f
el doble del resultado.
epílogo
Este artículo proporciona una introducción detallada a las funciones en Python lambda
, incluida su sintaxis, propósito y algunos casos de uso comunes. lambda
Las funciones son una herramienta poderosa en Python que puede hacer que su código sea más conciso y elegante. Aunque lambda
una función tiene algunas restricciones, como que solo puede contener una sola expresión, en muchos casos, esto es suficiente.
Espero que este artículo pueda ayudarlo a comprender y dominar las funciones en Python lambda
, y hacer que su viaje de programación de Python sea más fluido. Recuerde, la mejor manera de aprender es haciendo, así que trate de escribir algunas lambda
funciones ahora y vea lo que puede hacer.