En Python, la función Lambda es una función anónima, lo que significa que es una función sin nombre. Puede tener cualquier número de argumentos, pero solo una expresión, que se evalúa y se devuelve. Debe tener un valor de retorno.
Dado que una función lambda debe tener un valor de retorno para cada entrada válida, no podemos definirla con if pero sin else ya que no estamos especificando qué devolveremos si la condición if es falsa, es decir, su parte else .
Entendamos esto con un ejemplo simple de función lambda para elevar al cuadrado un número solo si es mayor que 0 usando if pero sin else .
Ejemplo 1:
Python3
# Lambda function with if but without else. square = lambda x : x*x if(x > 0) print(square(6))
Producción:
File "/home/2c8c59351e1635b6b026fb3c7fc17c8f.py", line 2 square = lambda x : x*x if(x > 0) ^ SyntaxError: invalid syntax
El código anterior en ejecución muestra SyntaxError, ya que sabemos que una función lambda debe devolver un valor y esta función devuelve x*x si x > 0 y no especifica qué se devolverá si el valor de x es menor o igual que 0.
Para corregirlo, necesitamos especificar qué se devolverá si la condición if es falsa, es decir, debemos especificar su parte else .
Veamos el código anterior con su otra parte.
Código:
Python3
# Lambda function with if-else square = lambda x : x*x if(x > 0) else None print(square(4))
Producción:
16
Ejemplo #2: El primer código es con if pero sin else , el segundo es con if-else .
Python3
# Example of lambda function using if without else mod = lambda x : x if(x >= 0) print(mod(-1))
Producción:
File "/home/20b09bdd29e24dfe24c185cd99dfcdfa.py", line 2 mod = lambda x : x if(x >= 0) ^ SyntaxError: invalid syntax
Ahora, veámoslo usando if-else.
Python3
# Example of lambda function using if-else mod = lambda x : x if(x >= 0) else -x print(mod(-1))
Producción:
1
Ejemplo #3: El primer código es con if pero sin else, el segundo es con if-else.
Python3
# Example of lambda function using if without else max = lambda a, b : x if(a > b) print(max(1, 2))
Producción:
File "/home/8cf3856fc13d0ce75edfdd76793bdde4.py", line 2 max = lambda a, b : x if(a > b) ^ SyntaxError: invalid syntax
Ahora, veámoslo usando if-else.
Python3
# Example of lambda function using if-else max = lambda a, b : a if(a > b) else b print(max(1, 2)) print(max(10, 2))
Producción:
2 10
Publicación traducida automáticamente
Artículo escrito por piyushtiwari515 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA