La fonction dite anonyme signifie qu'il n'y a pas besoin de définir une fonction, elle peut être utilisée comme une expression, et il n'y a pas besoin d'un nom de fonction (les noms me dérangent souvent). Certaines fonctions simples peuvent être simplifiées. . Par exemple
J'en ai besoin de deux. Une fonction qui ajoute des entiers est généralement définie comme ceci
def add(x, y): return x + y
Elle complète très bien la fonction dont j'ai besoin, mais maintenant j'ai besoin d'une fonction qui. ajoute des nombres et des chaînes
def addstr(x, y): return x + str(y)
Encore une fois, j'ai répondu à mes besoins, mais j'ai soudainement besoin de la fonction de soustraction et de division de deux entiers, donc la fonction doit être écrite tout le temps, mais en utilisant lambda anonyme les fonctions peuvent être utilisées directement
# 相加的实现 f = lambda x, y: x + y f_str = lambda x, y: x + str(y)
simplifie l'opération et rend la fonction plus simple, mais présente l'inconvénient d'une mauvaise maintenabilité. Elle n'est pas recommandée lorsque des fonctions complexes sont requises
<. 🎜>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')