Qu'est-ce qu'une expression lambda ?

S’exercer aux questions d’entretien de code 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’exercer aux questions d’entretien de code en Python

Définition

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

lambda
S’exercer aux questions d’entretien de code en Python

Définition

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

lambda arg1, arg2, ...:
S’exercer aux questions d’entretien de code 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’exercer aux questions d’entretien de code 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’exercer aux questions d’entretien de code en Python

Argument manquant

power = lambda x, y: x**y

 

power(2)
TypeError
S’exercer aux questions d’entretien de code en Python

Comparaison avec une définition de fonction classique

squared_lambda = lambda x: x**2
def squared_normal(x):
    return x**2
S’exercer aux questions d’entretien de code en Python

Comparaison avec une définition de fonction classique

                 lambda
def

S’exercer aux questions d’entretien de code en Python

Comparaison avec une définition de fonction classique

squared_lambda = lambda
def squared_normal

S’exercer aux questions d’entretien de code en Python

Comparaison avec une définition de fonction classique

squared_lambda = lambda x:
def squared_normal(x):

S’exercer aux questions d’entretien de code en Python

Comparaison avec une définition de fonction classique

squared_lambda = lambda x: x**2
def squared_normal(x):
    return x**2
squared_lambda(3)
9
squared_normal(3)
9
S’exercer aux questions d’entretien de code en Python

Passer une fonction lambda en argument

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

callback_function(arg) – fonction à un seul argument

def squared_normal(x):
    return x**2
function_with_callback(2, squared_normal)
4
S’exercer aux questions d’entretien de code en Python

Passer une fonction lambda en argument

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

callback_function(arg) – fonction à un seul argument

--> def squared_normal(x): <--
-->    return x**2         <--
--> function_with_callback(2, squared_normal) <--
4
S’exercer aux questions d’entretien de code en Python

Passer une fonction lambda en argument

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

callback_function(arg) – fonction à un seul argument

function_with_callback(2, lambda x: x**2)
4
S’exercer aux questions d’entretien de code en Python

Définition

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

lambda arg1, arg2, ...: expression(arg1, arg2, ...)
S’exercer aux questions d’entretien de code 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’exercer aux questions d’entretien de code 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’exercer aux questions d’entretien de code 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’exercer aux questions d’entretien de code 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’exercer aux questions d’entretien de code 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’exercer aux questions d’entretien de code en Python

Usage pratique

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

  • dans le corps d'une fonction pour une petite tâche
  • comme callbacks
S’exercer aux questions d’entretien de code en Python

Passons à la pratique !

S’exercer aux questions d’entretien de code en Python

Preparing Video For Download...