Embora eu possa contribuir, use um disjuntor de linha:
x = lambda x,y: x-y if x<y \
else y-x if y<x \
else 0
Não esqueça a coisa muito agradável que python é capaz de escrever oneliners, como no exemplo:
a=b=0; c=b+a; d = a+b**2 #etc etc
E o lambda é muito poderoso, mas não se destina à substituição de uma função inteira, quero dizer que você pode hacká-lo como (exemplo de empréstimo do colega acima):
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)
Mas você realmente quer fazer assim? É quase ilegível depois de algum tempo, é como chegar ao início da corda, começando com o fim desvendado.
As lambdas são usadas como funções únicas, no mapa, filtram e reduzem funções na Programação Orientada a Funcionalidade (entre outras coisas). Por exemplo, obter valores de caracteres de números inteiros e divisíveis 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]
Você pode usá-lo como função de expressão de função, alterando a função complexa (ou mais e várias lambdas e colocando-a dentro de outra lambda:
def someAnon(*args): return sum(list(args))
defAnon = lambda list: [ x*someAnon(*list) for x in list]
mas o Python tem suporte a expressões de função de outra maneira: -vemos que você tem alguma função chamada superAwesomeFunction
e essa função pode fazer coisas super impressionantes, você pode atribuí-lo a uma variável sem chamá-lo, assim:
SAF = superAwesomeFunction # there is no () at the end,
Então agora, quando você chama SAF, chama superAwesomeFunction ou método. Se você pesquisar na sua pasta Lib, poderá descobrir que a maioria dos __builtin__
módulos python é escrita dessa maneira. Isso é feito porque, às vezes, você precisará de algumas funções que executam tarefas específicas que não são necessárias o suficiente para serem utilizadas pelo usuário, mas que são necessárias para várias funções. Então, você pode optar por não ter 2 funções com o nome "superAwesomeFunction", pode ter "superAwesomeFunctionDoingBasicStuf" e "realSuperAwesomeFunction" e, em seguida, basta colocar a variável "realSuperAwesomeFunction" na variável "superAwesomeFunction" e pronto.
Você pode encontrar a localização dos módulos importados digitando no console importedModule.__file__
(exemplo real import os;os.__file__
) e basta seguir esse diretório para o arquivo chamado ImportModule.py e abri-lo no editor e descobrir como você pode maximizar seu próprio "conhecimento".
Espero que isso ajude você e talvez outros colegas com problemas.