Qu'est-ce qu'une expression lambda ?

S'entraîner aux questions d'entrevue de programmation en Python

Kirill Smirnov

Data Science Consultant, Altran

Définition

expression/fonction lambda — petite fonction avec la syntaxe suivante :

lambda arg1, arg2, ...: expression(arg1, arg2, ...)
S'entraîner aux questions d'entrevue de programmation en Python

Définition

expression/fonction lambda — petite fonction avec la syntaxe suivante :

lambda
S'entraîner aux questions d'entrevue de programmation en Python

Définition

expression/fonction lambda — petite fonction avec la syntaxe suivante :

lambda arg1, arg2, ...:
S'entraîner aux questions d'entrevue de programmation en Python

Définition

expression/fonction lambda — petite fonction avec la syntaxe suivante :

lambda arg1, arg2, ...: expression(arg1, arg2, ...)
lambda x: x**2
squared = lambda x: x**2

squared(4)
16

4 $\rightarrow$ x $\rightarrow$ x**2 $\rightarrow$ 16

S'entraîner aux questions d'entrevue de programmation en Python

Définition

expression/fonction lambda — petite fonction avec la syntaxe suivante :

lambda arg1, arg2, ...: expression(arg1, arg2, ...)
power = lambda x, y: x**y

power(2, 3)
8

2, 3 $\rightarrow$ x, y $\rightarrow$ x**y $\rightarrow$ 8

S'entraîner aux questions d'entrevue de programmation en Python

Argument manquant

power = lambda x, y: x**y

 

power(2)
TypeError
S'entraîner aux questions d'entrevue de programmation en Python

Comparaison avec la définition normale d'une fonction

squared_lambda = lambda x: x**2
def squared_normal(x):
    return x**2
S'entraîner aux questions d'entrevue de programmation en Python

Comparaison avec la définition normale d'une fonction

                 lambda
def

S'entraîner aux questions d'entrevue de programmation en Python

Comparaison avec la définition normale d'une fonction

squared_lambda = lambda
def squared_normal

S'entraîner aux questions d'entrevue de programmation en Python

Comparaison avec la définition normale d'une fonction

squared_lambda = lambda x:
def squared_normal(x):

S'entraîner aux questions d'entrevue de programmation en Python

Comparaison avec la définition normale d'une fonction

squared_lambda = lambda x: x**2
def squared_normal(x):
    return x**2
squared_lambda(3)
9
squared_normal(3)
9
S'entraîner aux questions d'entrevue de programmation en Python

Passer une fonction lambda en argument

def function_with_callback(num, callback_function):
    return callback_function(num)

callback_function(arg) — fonction à un argument

def squared_normal(x):
    return x**2
function_with_callback(2, squared_normal)
4
S'entraîner aux questions d'entrevue de programmation en Python

Passer une fonction lambda en argument

def function_with_callback(num, callback_function):
    return callback_function(num)

callback_function(arg) — fonction à un argument

--> def squared_normal(x): <--
-->    return x**2         <--
--> function_with_callback(2, squared_normal) <--
4
S'entraîner aux questions d'entrevue de programmation en Python

Passer une fonction lambda en argument

def function_with_callback(num, callback_function):
    return callback_function(num)

callback_function(arg) — fonction à un argument

function_with_callback(2, lambda x: x**2)
4
S'entraîner aux questions d'entrevue de programmation en Python

Définition

expression/fonction lambda — petite fonction avec la syntaxe suivante :

lambda arg1, arg2, ...: expression(arg1, arg2, ...)
S'entraîner aux questions d'entrevue de programmation en Python

Définition

expression/fonction lambda — petite fonction (anonyme) avec la syntaxe suivante :

lambda arg1, arg2, ...: expression(arg1, arg2, ...)
squared = lambda x: x**2
squared(3)
9
S'entraîner aux questions d'entrevue de programmation en Python

Définition

expression/fonction lambda — petite fonction (anonyme) avec la syntaxe suivante :

lambda arg1, arg2, ...: expression(arg1, arg2, ...)
(lambda x: x**2)(3)
9
S'entraîner aux questions d'entrevue de programmation en Python

Opérateur ternaire

def odd_or_even(num):
    if num % 2 == 0:
        return 'even'
    else:
        return 'odd'
odd_or_even(3)
'odd'
odd_or_even(6)
'even'
S'entraîner aux questions d'entrevue de programmation en Python

Opérateur ternaire

def odd_or_even(num):
    return 'even' if num % 2 == 0 else 'odd'
odd_or_even(3)
'odd'
odd_or_even(6)
'even'
S'entraîner aux questions d'entrevue de programmation en Python

Opérateur ternaire

odd_or_even = lambda num: 'even' if num % 2 == 0 else 'odd'
odd_or_even(3)
'odd'
odd_or_even(6)
'even'
S'entraîner aux questions d'entrevue de programmation en Python

Utilisation pratique

N'utilisez des expressions lambda que lorsque c'est vraiment nécessaire !

  • dans le corps d'une fonction pour une petite tâche
  • comme fonctions de rappel (callbacks)
S'entraîner aux questions d'entrevue de programmation en Python

Passons à la pratique !

S'entraîner aux questions d'entrevue de programmation en Python

Preparing Video For Download...