Corso
Puoi scrivere funzioni Python personalizzate usando la keyword def, le intestazioni, le docstring e i corpi delle funzioni. Tuttavia, esiste un modo più rapido per scrivere funzioni al volo: si chiamano funzioni lambda perché si usa la keyword lambda.
Alcune definizioni di funzione sono abbastanza semplici da poter essere convertite in una funzione lambda. In questo modo scrivi meno righe di codice, il che è davvero utile, soprattutto quando scrivi e mantieni programmi di grandi dimensioni.
lambda Function
Qui riscriviamo la nostra funzione raise_to_power come funzione lambda. Dopo la keyword lambda, specifichiamo i nomi degli argomenti; poi usiamo i due punti seguiti dall'espressione che indica cosa deve restituire la funzione.
raise_to_power = lambda x, y: x ** y
raise_to_power(2, 3)
8
Come accennato, le funzioni lambda ti permettono di scrivere funzioni in modo rapido e spartano; non consigliamo di usarle sempre, ma ci sono situazioni in cui tornano utili, come nell'esempio qui sotto.
map() and lambda Function
La funzione map accetta due argomenti, una funzione e una sequenza come una lista, e applica la funzione a tutti gli elementi della sequenza. Possiamo passare funzioni lambda a map senza nemmeno dare loro un nome; in questo caso parliamo di funzioni anonime.
In questo esempio usiamo map() con la funzione lambda, che eleva al quadrato tutti gli elementi della lista, e memorizziamo il risultato in square_all.
nums = [48, 6, 9, 21, 1]
square_all = map(lambda num: num ** 2, nums)
print(square_all)
<map object at 0x103e065c0>
Stampando square_all scopriamo che è un oggetto map; per vedere cosa restituisce, usiamo list per trasformarlo in una lista e stampiamo il risultato.
print(list(square_all))
[2304, 36, 81, 441, 1]
Esempio interattivo di scrittura di una funzione lambda
La funzione echo_word qui sotto accetta 2 parametri: un valore stringa, word1, e un valore intero echo. Restituisce una stringa che è la concatenazione di echo copie di word1.
Convertirai la semplice funzione sopra in una funzione lambda.
def echo_word(word1, echo):
"""Concatenate echo copies of word1."""
words = word1 * echo
return words
Nel seguente esempio, farai:
- Definire una funzione lambda
echo_wordusando le variabiliword1edecho. Replica ciò che fa la definizione originale diecho_word()sopra. - Chiamare
echo_word()con l'argomento stringa'hey'e il valore5, in quest'ordine. Assegna la chiamata aresult. Infine, stampa la variabileresult.
# Define echo_word as a lambda function: echo_word
echo_word = (lambda word1, echo: word1 * echo)
# Call echo_word: result
result = echo_word('hey', 5)
# Print result
print(result)
Quando eseguiamo il codice sopra, otteniamo il seguente risultato:
heyheyheyheyhey
Per saperne di più sulle funzioni Lambda, guarda questo video dal nostro corso Python Data Science Toolbox (Parte 1).
Questo contenuto è tratto dal corso Python Data Science Toolbox (Parte 1) di DataCamp, a cura di Hugo Bowne-Anderson.
Dai un'occhiata al tutorial sulle funzioni in Python di DataCamp.

