Die sogenannte anonyme Funktion bedeutet, dass keine Funktion definiert werden muss, sie wie ein Ausdruck verwendet werden kann und kein Funktionsname erforderlich ist (oft stört mich der Name). Vereinfacht: Zum Beispiel
Ich brauche zwei Eine Funktion, die Ganzzahlen hinzufügt, wird normalerweise so definiert
def add(x, y): return x + y
Sie vervollständigt die Funktion, die ich brauche, sehr gut, aber jetzt brauche ich eine Funktion das fügt Zahlen und Zeichenfolgen hinzu
def addstr(x, y): return x + str(y)
Ich habe wieder einmal meine Bedürfnisse erfüllt, aber ich brauche plötzlich die Funktion zum Subtrahieren und Dividieren zweier Ganzzahlen, also muss die Funktion die ganze Zeit aufgeschrieben werden, aber mit Lambda Anonyme Funktionen können direkt verwendet werden
# 相加的实现 f = lambda x, y: x + y f_str = lambda x, y: x + str(y)
vereinfacht die Bedienung und macht die Funktion einfacher, hat jedoch den Nachteil einer schlechten Wartbarkeit. Dies wird nicht empfohlen, wenn komplexe Funktionen erforderlich sind >
lambda [arg1[, arg2, ... argN]]: expression
# 使用def定义函数的方法 def true(): return True #等价的lambda表达式 >>> lambda :True <function <lambda> at 0x0000000001E42518> # 保留lambda对象到变量中,以便随时调用 >>> true = lambda :True >>> true() True # 使用def定义函数的方法 def true(): return True #等价的lambda表达式 >>> lambda :True <function <lambda> at 0x0000000001E42518> # 保留lambda对象到变量中,以便随时调用 >>> true = lambda :True >>> true() True
# 使用def定义的函数 def add( x, y ): return x + y # 使用lambda的表达式 lambda x, y: x + y # lambda也允许有默认值和使用变长参数 lambda x, y = 2: x + y lambda *z: z # 调用lambda函数 >>> a = lambda x, y: x + y >>> a( 1, 3 ) 4 >>> b = lambda x, y = 2: x + y >>> b( 1 ) 3 >>> b( 1, 3 ) 4 >>> c = lambda *z: z >>> c( 10, 'test') (10, 'test') # 使用def定义的函数 def add( x, y ): return x + y # 使用lambda的表达式 lambda x, y: x + y # lambda也允许有默认值和使用变长参数 lambda x, y = 2: x + y lambda *z: z # 调用lambda函数 >>> a = lambda x, y: x + y >>> a( 1, 3 ) 4 >>> b = lambda x, y = 2: x + y >>> b( 1 ) 3 >>> b( 1, 3 ) 4 >>> c = lambda *z: z >>> c( 10, 'test') (10, 'test')