Pubblicità

Lambda Function in Python: cos’è e come si usa

In questo articolo andiamo alla scoperta della misteriosa Lambda Function in Python, capendo cos’è e come si usa.

 Lambda function in Python
Photo from Pixabay

Oggi parliamo di un oggetto che è un po’ misterioso e poco intuitivo ma molto utile ed utilizzato: Lambda function in Python.

E’ uno di quei concetti che crea confusione soprattutto per i neofiti di Python e che può risultare però utile in molti contesti, come per esempio nel caso in cui voglia applicare una funziona ad un DataFrame Pandas (come spieghiamo qui).

Cerchiamo di capire cos’è, a cosa serve e come possiamo utilizzarla per rendere il nostro codice più semplice ed efficiente.

Cos’è una Lambda Function in Python

Una Lambda Function è una funzione anonima, ovvero una funzione a cui non è stato assegnato un nome e che serve per utilizzare le caratteristiche delle funzioni senza però doverle definire.

Sì, hai capito bene: possiamo utilizzare una funzione senza definirla.

Beh, capisco che possa essere un po’ confusing, ma cerchiamo di capire che cosa vuol dire più nello specifico. Cerchiamo di confrontare il normale utilizzo delle funzioni con una funzione lambda.

Funzioni normali VS Lambda Function

Se conosci questo blog da un po’ di tempo, sarai ormai esperto di funzioni!

Ne abbiamo viste ed utilizzate tante perché sono uno dei costrutti fondamentali di Python e di molti altri linguaggi.

In questo articolo per esempio avevamo creato delle funzioni per generare password in Python.

Utilizzo “normale” delle funzioni

Solitamente quando abbiamo bisogno di una cerca operazioni che deve essere ripetuta un numero di volte, utilizziamo una funzione per non scrivere codice ogni volta.

Immaginiamo per esempio di voler creare una funzione che mi calcoli il quadrato di un certo numero che voglio passargli.

Potrò molto facilmente definire una funzione, passargli come argomento un numero e chiedere di restituirmi il quadrato.

def quadrato(x):
    return x * x

Se andiamo a chiamare la funzione passandogli un numero, il risultato naturalmente sarà il seguente:

numero = quadrato(16)
print(numero)
>>> 256

Lambda function in Python

Esiste però un modo più “compatto“, un modo che infatti ci evita di dover definire la funzione.

quadrato = lambda x : x * x
quadrato(16)
>>> 256

Posso anche fare, in modo ancora più compatto:

(lambda x : x * x)(16)

Lambda non è il nome della funzione, è una keyword di Python, noi infatti con lambda usiamo una funzione senza assegnarli un nome.

L’argomento è sempre x, come nel caso della funzione che abbiamo definito nel metodo tradizionale, ma in questo caso sta dopo “lambda” e alla sinistra dei due punti (:). Qualora ci fossero stati più argomenti, andavano tutti dopo “lambda” alla sinistra dei due punti separati da virgole.

Solitamente con le funzioni tradizionali abbiamo un return, ovvero il valore che la nostra funzione dovrà restituirci. Nel caso delle lambda invece, ciò che ci verrà ritornato sta alla destra dei due punti.

Perché utilizzare le Lambda Function

Le lambda functions in Python possono sembrare qualcosa di misterioso e di poco utile, ma in realtà permettono di risparmiare un bel po’ di codice e di migliorare la leggibilità.

Solitamente infatti le funzioni vengono poste all’inizio del codice o su diversi file python, per poi richiamarle nel nostro codice. Nel caso però di funzioni estemporanee, l’utilizzo di lambda functions permette di migliorare la scrittura del codice e la sua leggibilità, senza dover rincorrere nel Python altre funzioni.

Le funzioni lambda sono poi molto utili quando dobbiamo lavorare con Pandas, una delle librerie più importanti in ambito Data Science e Machine Learning (alla fine dell’articolo lascio una serie di link in cui scopriamo pandas).

Le lambda ci permettono infatti di lavorare sulle serie, attraverso per esempio codici come questi:

df['quadrato'] = df['numero'].apply(lambda x: x * x)

In questo modo creerò con grande facilità una nuova colonna, “quadrato”, che opererà il quadrato del numero che si trova, riga per riga, nella variabile “numero”.

Qualche aspetto negativo

L’utilizzo delle lambda functions in Python però non è sempre la scelta giusta da compiere, sebbene il più delle volte sia conveniente.

Infatti una funzione lambda può compiere una sola espressione, non è possibile inserire operazioni multiple in una funzione di questo tipo.

Inoltre un altro contro è il fatto che non è possibile inserire al suo interno dei commenti che possono agevolarne la comprensione.

Sta un po’ al nostro caso specifico decidere se utilizzare o meno le lambda functions in Python.

Ecco alcuni link di nostri articoli che hanno per tema Pandas:

Pubblicità