Pensé que podría contribuir, use un interruptor de línea:
x = lambda x,y: x-y if x<y \
else y-x if y<x \
else 0
No olvides lo muy bueno que Python puede escribir en líneas, como en el ejemplo:
a=b=0; c=b+a; d = a+b**2 #etc etc
Y el lambda es muy poderoso, pero no está destinado a la sustitución de 1 función completa, es decir, podría piratearlo como (ejemplo de préstamo del colega anterior):
makeTag = lambda tagName: "<{}>".format(tagName)
closeTag = lambda tagName: makeTag("/"+str(tagName))
openTag = lambda tagName: makeTag(tagName)
writeHMTLline = lambda tag,content: ""+opetTag(tag)+str(content)+closeTag(tag)
¿Pero realmente quieres hacerlo así? En su mayoría es ilegible después de algún tiempo, es como llegar al comienzo de la cuerda comenzando con el final desenredado.
Las lambdas se consideran funciones únicas, en el mapa, filtran y reducen funciones en la programación orientada funcional (entre otras cosas). Por ejemplo, obtener valores de caracteres de valores que son enteros y divisibles por 2
chrDev2 = lambda INT: chr(INT) if isinstance(INT,int) and INT%2==0 else INT
someStringList = map( chrDev2, range(30) )
>>> ['\x00', 1, '\x02', 3, '\x04', 5, '\x06', 7, '\x08', 9, '\n', 11, '\x0c', 13, '\x0e', 15, '\x10', 17, '\x12', 19, '\x14', 21, '\x16', 23, '\x18', 25, '\x1a', 27, '\x1c', 29]
Puede usarlo como función de expresión de funciones definiendo funciones complejas (o más y varias lambdas, y colocándolas dentro de otra lambda:
def someAnon(*args): return sum(list(args))
defAnon = lambda list: [ x*someAnon(*list) for x in list]
pero Python tiene soporte para expresiones de funciones de otra manera: -let dice que tiene alguna función llamada superAwesomeFunction
y esa función puede hacer cosas súper increíbles, puede asignarla a una variable al no llamarla, así:
SAF = superAwesomeFunction # there is no () at the end,
Entonces, cuando llame a SAF, llamará a superAwesomeFunction o método. Si busca a través de su carpeta Lib, puede encontrar que la mayoría de los __builtin__
módulos de Python están escritos de esa manera. Esto se hace porque a veces necesitará algunas funciones que realicen tareas específicas que no son lo suficientemente necesarias para que el usuario pueda usarlas, pero es necesario para varias funciones. Entonces, tiene la opción de no tener 2 funciones con el nombre "superAwesomeFunction", puede tener "superAwesomeFunctionDoingBasicStuf" y "realSuperAwesomeFunction" y simplemente poner la variable "realSuperAwesomeFunction" en "superAwesomeFunction" y listo.
Puede encontrar la ubicación de los módulos importados ingresando en la consola importedModule.__file__
(ejemplo real import os;os.__file__
), y simplemente siga ese directorio al archivo llamado importModule.py y ábralo en el editor y descubra cómo puede maximizar su propio "conocimiento".
Espero que esto te ayude a ti y quizás a otros colegas en problemas.