Ich könnte zwar einen Beitrag leisten, benutze aber einen Zeilenumbruch:
x = lambda x,y: x-y if x<y \
else y-x if y<x \
else 0
Vergessen Sie nicht, wie schön es ist, dass Python Oneliners schreiben kann, wie im Beispiel:
a=b=0; c=b+a; d = a+b**2 #etc etc
Und das Lambda ist sehr mächtig, aber es ist nicht für die Ersetzung einer ganzen Funktion gedacht, ich meine, Sie könnten es wie folgt hacken (Beispiel von einem Kollegen oben):
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)
Aber willst du es wirklich so machen? Es ist meistens nach einiger Zeit unlesbar, es ist, als würde man mit dem nicht gelösten Ende am Anfang des Seils beginnen.
Lambdas werden unter anderem als Einzelfunktionen in Map-, Filter- und Reduktionsfunktionen in Functional Oriented Programing verwendet. Beispiel: Zeichenwerte von Werten abrufen, die ganzzahlig und durch 2 teilbar sind
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]
Sie können es als Funktion verwenden, indem Sie eine komplexe Funktion (oder mehr und mehrere Lambdas) definieren und in ein anderes Lambda einfügen:
def someAnon(*args): return sum(list(args))
defAnon = lambda list: [ x*someAnon(*list) for x in list]
Aber Python unterstützt Funktionsausdrücke auf andere Weise: -lets sagen, dass Sie eine Funktion haben, die aufgerufen wird, superAwesomeFunction
und diese Funktion kann einige super tolle Dinge tun. Sie können sie einer Variablen zuweisen, indem Sie sie nicht aufrufen, wie folgt:
SAF = superAwesomeFunction # there is no () at the end,
Wenn Sie also SAF aufrufen, rufen Sie superAwesomeFunction oder Methode auf. Wenn Sie Ihren Lib-Ordner durchsuchen, werden Sie feststellen, dass die meisten Python- __builtin__
Module so geschrieben sind. Dies geschieht, weil Sie manchmal einige Funktionen benötigen, die bestimmte Aufgaben ausführen, die für den Benutzer nicht ausreichen, aber für mehrere Funktionen erforderlich sind. Wenn Sie also die Wahl haben, dass Sie nicht zwei Funktionen mit dem Namen "superAwesomeFunction" haben können, können Sie "superAwesomeFunctionDoingBasicStuf" und "realSuperAwesomeFunction" haben und dann einfach die Variable "realSuperAwesomeFunction" in die Variable "superAwesomeFunction" einfügen und fertig.
Sie können den Speicherort der importierten Module finden, indem Sie in die Konsole eingeben importedModule.__file__
(reales Beispiel import os;os.__file__
). Folgen Sie diesem Verzeichnis einfach zu der Datei mit dem Namen importiertesModul.py, öffnen Sie sie im Editor und finden Sie heraus, wie Sie Ihr eigenes "Wissen" maximieren können.
Ich hoffe, das hilft Ihnen und vielleicht anderen Kollegen in Schwierigkeiten.