O que é uma expressão lambda?

Praticando questões de entrevista de código em Python

Kirill Smirnov

Data Science Consultant, Altran

Definição

expressão/função lambda - é uma função curta com a seguinte sintaxe:

lambda arg1, arg2, ...: expression(arg1, arg2, ...)
Praticando questões de entrevista de código em Python

Definição

expressão/função lambda - é uma função curta com a seguinte sintaxe:

lambda
Praticando questões de entrevista de código em Python

Definição

expressão/função lambda - é uma função curta com a seguinte sintaxe:

lambda arg1, arg2, ...:
Praticando questões de entrevista de código em Python

Definição

expressão/função lambda - é uma função curta com a seguinte sintaxe:

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

Praticando questões de entrevista de código em Python

Definição

expressão/função lambda - é uma função curta com a seguinte sintaxe:

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

Praticando questões de entrevista de código em Python

Argumento ausente

power = lambda x, y: x**y

 

power(2)
TypeError
Praticando questões de entrevista de código em Python

Comparação com definição normal de função

squared_lambda = lambda x: x**2
def squared_normal(x):
    return x**2
Praticando questões de entrevista de código em Python

Comparação com definição normal de função

                 lambda
def

Praticando questões de entrevista de código em Python

Comparação com definição normal de função

squared_lambda = lambda
def squared_normal

Praticando questões de entrevista de código em Python

Comparação com definição normal de função

squared_lambda = lambda x:
def squared_normal(x):

Praticando questões de entrevista de código em Python

Comparação com definição normal de função

squared_lambda = lambda x: x**2
def squared_normal(x):
    return x**2
squared_lambda(3)
9
squared_normal(3)
9
Praticando questões de entrevista de código em Python

Passando função lambda como argumento

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

callback_function(arg) - uma função com um argumento

def squared_normal(x):
    return x**2
function_with_callback(2, squared_normal)
4
Praticando questões de entrevista de código em Python

Passando função lambda como argumento

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

callback_function(arg) - uma função com um argumento

--> def squared_normal(x): <--
-->    return x**2         <--
--> function_with_callback(2, squared_normal) <--
4
Praticando questões de entrevista de código em Python

Passando função lambda como argumento

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

callback_function(arg) - uma função com um argumento

function_with_callback(2, lambda x: x**2)
4
Praticando questões de entrevista de código em Python

Definição

expressão/função lambda - é uma função curta com a seguinte sintaxe:

lambda arg1, arg2, ...: expression(arg1, arg2, ...)
Praticando questões de entrevista de código em Python

Definição

expressão/função lambda - é uma função curta (anônima) com a seguinte sintaxe:

lambda arg1, arg2, ...: expression(arg1, arg2, ...)
squared = lambda x: x**2
squared(3)
9
Praticando questões de entrevista de código em Python

Definição

expressão/função lambda - é uma função curta (anônima) com a seguinte sintaxe:

lambda arg1, arg2, ...: expression(arg1, arg2, ...)
(lambda x: x**2)(3)
9
Praticando questões de entrevista de código em Python

Operador ternário

def odd_or_even(num):
    if num % 2 == 0:
        return 'even'
    else:
        return 'odd'
odd_or_even(3)
'odd'
odd_or_even(6)
'even'
Praticando questões de entrevista de código em Python

Operador ternário

def odd_or_even(num):
    return 'even' if num % 2 == 0 else 'odd'
odd_or_even(3)
'odd'
odd_or_even(6)
'even'
Praticando questões de entrevista de código em Python

Operador ternário

odd_or_even = lambda num: 'even' if num % 2 == 0 else 'odd'
odd_or_even(3)
'odd'
odd_or_even(6)
'even'
Praticando questões de entrevista de código em Python

Uso prático

Use expressões lambda só quando fizer sentido!

  • dentro de funções, para uma tarefa pequena
  • como callbacks
Praticando questões de entrevista de código em Python

Vamos praticar!

Praticando questões de entrevista de código em Python

Preparing Video For Download...