Définit le texte qui doit être stylistiquement différent de texte normal
Dans ce cours, vous allez découvrir les expressions lambda de Python et comment les utiliser pour écrire des fonctions anonymes.
Parfois, vous devez écrire une fonction simple qui contient une seule expression. Cependant, vous ne devez utiliser cette fonction qu'une seule fois. Et il sera inutile de définir cette fonction avec le mot-clé def.
C'est là que les expressions lambda de Python entrent en jeu.
lambda paramètres : expression
def anonymous(paramètres) : return expression
def get_nom_complet(prenom, nom, formateur): return formater(prenom, nom)La fonction get_nom_complet accepte 3 arguments
def prenom_nom(prenom, nom): return f"{prenom} {nom}" def nom_prenom(prenom, nom): return f"{nom}, {prenom}"Et voilà comment appeler la fonction get_nom_complet() en passant le prénom, le nom et les fonctions prenom_nom / nom_prenom :
nom_complet = get_nom_complet('John', 'Doe', prenom_nom) print(nom_complet) #retourne John Doe nom_complet = get_nom_complet('John', 'Doe', nom_prenom) print(nom_complet) #retourne Doe, JohnAu lieu de définir les fonctions prenom_nom et nom_prenom, vous pouvez utiliser des expressions lambda.
lambda prenom,nom: f"{prenom} {nom}"Cette expression lambda accepte deux arguments et les concatène en une chaîne formatée dans l'ordre suivant : prénom, espace et nom.
lambda nom, prenom: f"{prenom} {nom}";A l'aide d'expressions lambda, vous pouvez appeler la fonction get_nom_complet() comme suit :
def get_nom_complet(prenom, nom, formateur): return formateur(prenom, nom) nom_complet = get_nom_complet('John','Doe',lambda prenom, nom: f"{prenom} {nom}") print(nom_complet) nom_complet = get_nom_complet('John','Doe',lambda prenom, nom: f"{nom} {prenom}") print(nom_complet)Ce qui donne une fonction plus précise et moins longue.
def fois(n): return lambda x: x * nCet exemple montre comment appeler la fonction times() :
def fois(n): return lambda x: x * n triple = fois(3) print(triple(3)) print(triple(8))Comme la fonction fois() renvoie une fonction, le triple est également une fonction. Pour l'appeler, vous placez des parenthèses comme ceci :
def fois(n): return lambda x: x * n triple = fois(3) print(triple(3)) #on peut aussi stcker dans une varible x=triple(8) print(x)
appellables = [] for i in (1, 2, 3): appellables.append(lambda: i) for f in appellables: print(f())Comment cela fonctionne?
appellables = [] for i in (1, 2, 3): appellables.append(lambda a=i: a) for f in appellables: print(f())En effet, dans cet exemple, la valeur de a est évaluée au moment où l'expression lambda est créée. Par conséquent, le programme renvoie la valeur attendue.