Python >> Tutoriel Python >  >> Python

Fonctions Lambda en Python :une introduction simple

Une fonction lambda est une fonction anonyme en Python. Il commence par le mot-clé lambda , suivi d'une liste de zéro ou plusieurs arguments séparés par des virgules, suivis des deux-points et de l'expression de retour. Par exemple, lambda x, y, z: x+y+z calculerait la somme des trois valeurs d'argument x+y+z .

Voici un exemple pratique où les fonctions lambda sont utilisées pour générer une fonction d'incrémentation :

Exercice :Ajoutez un autre paramètre à la fonction lambda !

Regardez la vidéo ou lisez l'article pour en savoir plus sur les fonctions lambda en Python :

Casse-tête . Voici un petit puzzle de code pour tester vos compétences :

def make_incrementor(n):
    return lambda x: x + n
f = make_incrementor(42)
print(f(0))
print(f(1))

Pour tester votre compréhension, vous pouvez résoudre ce puzzle de code exact avec le sujet "Fonctions lambda en Python" dans mon application de puzzle de code Finxter.

Quand utiliser les fonctions lambda ?

"Si cela ne vous dérange pas, pouvez-vous s'il vous plaît expliquer, avec des exemples, comment nous sommes censés utiliser 'lambda' dans nos codes de programmation Python ?"Colen , utilisateur Finxter

Les fonctions Lambda sont des fonctions anonymes qui ne sont pas définies dans l'espace de noms (elles n'ont pas de nom). La syntaxe est :

lambda <argument name>  : <return expression>. 

Tout d'abord, n'utilisez pas les fonctions lambda si cela ne vous semble pas naturel. Contrairement à de nombreux autres codeurs Python, je ne suis pas un grand fan de la création de code Pythonic sophistiqué que personne ne comprend.

Cela dit, je dois admettre que j'utilise assez fréquemment les fonctions lambda. Voici comment j'utilise les fonctions lambda dans l'un de mes puzzles (vous le reconnaîtrez peut-être dans le livre CBP).

def encrypt(s1):
    s2 = map(lambda c : chr(ord(c) + 2), s1)
    return ''.join(s2)


def decrypt(s1):
    s2 = map(lambda c : chr(ord(c) - 2), s1)
    return ''.join(s2)


s = "xtherussiansarecomingx"
print(decrypt(encrypt(encrypt(s)))==encrypt(s))

Exercice  :Quelle est la sortie de ce code ?

La fonction encrypt décale la chaîne de deux positions Unicode vers la droite. La fonction de déchiffrement fait exactement le contraire en décalant la chaîne s1 vers la gauche. Par conséquent, la sortie est "True".

Pour répondre à la question, j'utilise les fonctions lambda uniquement comme argument d'entrée pour des fonctions telles que map() ou filter(). Par exemple, la fonction map applique la fonction argument (anonyme ou non - peu importe) à chaque élément d'une séquence. Mais il est souvent plus simple de définir d'abord la fonction et de lui donner un nom lisible par l'homme.

Jetons un coup d'œil à un cours vidéo interactif consacré uniquement à la merveilleuse fonction Python lambda !

Cours vidéo sur les fonctions Lambda

Aperçu

Applications min() et max()

Lambdas sans paramètre

Fonction de carte et Lambdas

Empiler les Lambda

La fonction de filtrage

Boucles Si-Sinon

Personnaliser le tri()