Funzioni lambda di Python con esempi pratici

Pubblicato: 2021-06-21

Le funzioni lambda di Python sono quelle funzioni piccole e definite senza un nome. In Python, la parola chiave 'def' viene utilizzata per definire una funzione. Tuttavia, nel caso di funzioni anonime, la parola chiave 'lambda' viene utilizzata per definire tali funzioni. Pertanto, il nome "funzioni lambda. Potrebbe esserci un nome o non essere assegnato alle funzioni.

Rispetto alle normali funzioni in Python, le funzioni lambda sono brevi.

Le funzioni lambda sono state aggiunte alla sintassi di linguaggi di programmazione come Python, Java, C++, C#, ecc. Hanno nella loro sintassi. Mentre è usato come concetto fondamentale in Languages ​​of ML o LISP.

L'articolo si concentrerà sul concetto di funzioni lambda di Python e sul loro utilizzo.

In base al tipo di linguaggio di programmazione, le funzioni lambda possono essere utilizzate in modo intercambiabile con i seguenti termini:

  • Funzioni anonime
  • Funzioni Lambda
  • Espressioni Lambda
  • Astrazioni Lambda
  • Forma Lambda
  • Letterali di funzione

Sommario

Calcolo Lambda

Il calcolo Lambda è un modello di calcolo basato su cui si basano le espressioni lambda. Il calcolo lambda si basa sulla pura astrazione ed è stato formalizzato da Alonzo Church. Conosciuto anche come astrazioni lambda, si riferisce al modello originale creato da Alonzo Church.

Qualsiasi calcolo può essere codificato da questo concetto.

Sintassi della funzione lambda:

La seguente sintassi viene utilizzata durante l'utilizzo delle funzioni lambda in Python.

argomenti lambda: espressione

Può esserci un numero qualsiasi di argomenti nella funzione lambda in python . Ma le funzioni possono avere una sola espressione. Questa espressione viene prima valutata e quindi restituita. L'uso delle funzioni lambda si trova ovunque vi sia un requisito degli oggetti funzione.

Considerando un caso in cui una funzione anonima con due argomenti è definita con lambda ma non è vincolata ad alcuna variabile:

lambda x, y: x + y

Qui, i due argomenti vengono presi dalla funzione e viene restituita la somma.

Ci sono alcune caratteristiche mostrate da una funzione lambda:

  • Non possono esserci istruzioni nel corpo della funzione lambda ma possono contenere solo espressioni.
  • Il codice di esecuzione è solo una singola riga.
  • Le annotazioni di tipo non sono supportate dalla funzione lambda in python .
  • È consentita l'invocazione immediata.

Le dichiarazioni non possono essere utilizzate

Come accennato, non possono esserci istruzioni durante la definizione delle funzioni lambda. Se l'utente utilizza istruzioni come pass, return, raise o assert, ci sarà un'eccezione SyntaxError. Il risultato dell'eccezione può essere mostrato tramite il codice seguente

Fonte

Nel codice precedente, si è verificato un errore di sintassi durante l'analisi del codice che conteneva l' istruzione assert nel corpo della funzione lambda.

la funzione lambda contiene solo una singola espressione

Contrariamente a tutte le normali funzioni standard in Python, una funzione lambda in Python può contenere solo una singola espressione. Il corpo della funzione lambda può avere l'espressione diffusa dappertutto tramite l'uso di più righe con parentesi. Tuttavia, rimane ancora come un'unica espressione.

Fonte

La stringa "dispari" viene restituita quando è presente un argomento "dispari" mentre la stringa "pari" viene restituita quando è presente un argomento "pari". Nel codice precedente vengono utilizzate due righe in quanto sono racchiuse tra parentesi. Ma rimane come un'unica espressione.

Digita le annotazioni

Con la disponibilità del "tipo di suggerimento" in python, le funzioni normali sono ora preferite rispetto alle funzioni lambda in python. Con la disponibilità di strumenti come mypy, pyre, ecc. l'errore di tipo può essere rilevato con full_name(). L'errore di sintassi associato alla funzione lambda viene generato durante il runtime.

Esecuzione della funzione richiamata immediatamente (IIFE)

La funzione non può essere utilizzata al di fuori di un interprete Python. La definizione dell'espressione lambda in python può essere passata a funzioni di ordine superiore come map(), ecc.

Argomenti in una funzione lambda

Diversi modi sono supportati nelle espressioni lambda python per il passaggio di argomenti come:

  • Argomenti posizionali
  • Argomenti denominati noti anche come argomenti di parole chiave
  • Elenco variabile di argomenti che viene anche chiamato varags.
  • Elenco variabile degli argomenti delle parole chiave
  • Argomenti con sole parole chiave.

Decoratori in un'espressione Python Lambda

Il decoratore può essere definito come un'implementazione di pattern che consente di aggiungere un comportamento a una classe oa una funzione. La sintassi di @decorator è usata come prefisso di una funzione per esprimere un decoratore in python

Solo con l'argomento 'Python' viene stampata la funzione_decorata() . Il comportamento aggiuntivo che viene stampato è "Funzione di chiamata "funzione_decorata".

Python consente di aggiungere un decoratore a una funzione lambda, sebbene l'uso della sintassi @decorator non sia richiesto. Il decoratore agisce come una funzione che chiama la funzione lambda.

Viene visualizzato <lambda> dove viene identificata la funzione lambda. Mentre, nel caso di una normale funzione ie add_two, è identificata chiaramente.

Ai fini del debug, le funzioni lambda possono essere decorate in questo modo.

Chiusura

Closure() in python è definita come una funzione in cui le variabili libere, ad eccezione dei parametri utilizzati nella funzione, sono vincolate a valori specifici definiti nell'ambito della funzione. Possiamo chiamare le chiusure da qualsiasi luogo. Le funzioni Lambda in Python possono fungere da chiusure in un modo in cui le normali funzioni agiscono come una chiusura.

Utilizzo delle funzioni lambda

  • Ogni volta che è necessario utilizzare una funzione per un tempo più breve, in tal caso vengono utilizzate le funzioni lambda.
  • Per il passaggio di funzioni a una funzione di una funzione di ordine superiore, vengono applicate le funzioni lambda. Le funzioni vengono passate come argomenti a quelle funzioni di ordine superiore.
  • Le funzioni lambda in Python possono essere utilizzate con altre funzioni integrate come map(), ecc.

Test delle funzioni lambda

Attraverso l'uso dei moduli doctest e unittest, le funzioni lambda in python possono essere testate:

  • I moduli Unittest testano le funzioni lambda come le normali funzioni.
  • Nel caso del modulo doctest, il codice python viene estratto da docstring , per l'esecuzione del test. La sintassi della funzione lambda non consente il docstring . Tuttavia, è possibile assegnare una stringa all'elemento _doc_ della lambda a cui viene assegnato il nome.

Esempi di funzioni Python Lambda

Nel codice seguente, viene definita una funzione con il nome "identity" in cui viene restituito un argomento. Viene definita come una funzione standard di python tramite l'utilizzo della parola chiave “def”.

>>> def identità (x);

….. ritorno x

Qui x viene preso come argomento dalla funzione “identity” e quando viene invocato restituisce l'argomento.

Scrivere lo stesso codice usando lambda sarà:

lambda x: x

L'espressione è composta da tre parti: Lambda come parola chiave, x che è quindi una variabile associata e X che è il corpo del codice.

  • La variabile associata si riferisce all'argomento passato a una funzione lambda. Tuttavia, le variabili libere sono quelle che non sono vincolate e possono essere referenziate nel corpo dell'espressione. Una costante può essere una variabile libera o variabili definite nell'ambito della funzione.

L'espressione di cui sopra può essere elaborata come

>>> lambda x: x + 1

Qui, la funzione aggiunge 1 all'argomento. La funzione può essere aggiunta a un argomento circondando sia la funzione che l'argomento tramite l'uso di parentesi.

>>>(lambda x: x + 1)(2)

3

Per calcolare il valore in un'espressione, viene applicata una strategia di riduzione. Come, nell'esempio sopra, la variabile vincolata "x" può essere sostituita con l'argomento 2.

(lambda x: x + 1 )(2) = Lambda 2: 2 + 1

= 2 + 1

= 3

Poiché la funzione lambda è un'espressione, è possibile eseguire la denominazione e il codice sopra può essere riscritto come

>>> add_one = Lambda x : x + 1

>>> aggiungi_uno(2)

3

Questo equivale a scrivere:

def add_one(x):

restituisce x + 1

Un singolo argomento viene preso dalle funzioni lambda. Inoltre, durante la definizione della funzione lambda in Python non ci sono parentesi attorno alle funzioni.

Per passare più di un argomento a una funzione lambda python , gli argomenti vengono elencati e separati tramite l'uso di una virgola(). Non ci dovrebbero essere parentesi durante l'elenco degli argomenti. Di seguito è riportato un esempio di funzioni a più argomenti:

Qui, due argomenti vengono presi dalla funzione lambda sotto full_name. Una stringa viene restituita dalla funzione che interpola il primo e l' ultimo parametro. Il codice mostra che durante la definizione delle funzioni lambda non è stata utilizzata alcuna parentesi. La chiamata della funzione lambda segue lo stesso modo di quella di una funzione standard in python, cioè usando le parentesi che circondano gli argomenti.

Funzioni lambda Python con filter()

In python, la funzione filter() , accetta un argomento come una lista e una funzione. Attraverso le voci della lista si può richiamare la funzione che restituisce una nuova lista di voci. La funzione per questo elenco appena creato viene valutata su True .

Di seguito viene mostrato un esempio della funzione filter() utilizzata per filtrare i numeri pari contenuti in un elenco.

Fonte

L'output generato dal programma è il nuovo elenco: [4, 6, 8, 12].

Funzione lambda Python con map()

Un elenco e una funzione vengono presi come argomenti nella funzione python map(). Tutti gli elementi contenuti nell'elenco chiamano la funzione che restituisce un elenco appena creato con gli elementi restituiti dalla funzione.

Conclusione

Le funzioni lambda di Python sono quelle funzioni che sono a riga singola e sono dichiarate senza un nome, cioè una funzione anonima. Diversi numeri di argomenti possono essere passati a una funzione lambda che può avere una sola espressione. A volte, la funzione lambda può essere passata ad altre funzioni come argomento. La funzione, se definita con la parola chiave 'def' in python, può comportarsi come una normale funzione.

L'articolo, quindi, ha spiegato i concetti delle funzioni lambda in python, la loro applicazione con altre funzioni e anche alcuni esempi. Se sei ulteriormente interessato ad acquisire competenze sul linguaggio di programmazione e padroneggiare le tue capacità di programmazione, puoi consultare il corso " Programma Executive PG in Data Science " offerto da upGrad . È appositamente progettato per tutti i professionisti entry-level di età compresa tra 21 e 45 anni che desiderano acquisire le proprie capacità di codifica nella scienza dei dati. Se sei disposto a fare un passo verso i tuoi sogni, fatti avanti e dai un'occhiata ai vantaggi del corso. Con progetti pratici del settore, il corso fornito da IIIT-B è progettato per soddisfare le tue esigenze e prepararti per i futuri settori di punta.

Qual è la differenza tra una funzione normale e una funzione lambda?

Sappiamo che una funzione in Python è definita usando la parola chiave def. Allo stesso modo, una funzione lambda viene definita utilizzando la parola chiave lambda. Considera l'esempio seguente per comprendere a fondo la differenza tra i due:
# Funzione normale def sq(x): return x*x # Funzione Lambda lambda_sq = lambda x: x*x # Chiamare la funzione normalmente # definita print(sq(10)) # usando la funzione lambda print(lambda_sq(10)) }
L'esempio sopra illustra 2 funzioni che calcolano il quadrato di un numero. Senza lambda, dobbiamo creare una funzione sq(x), quindi restituire il quadrato. D'altra parte, con lambda, l'intera funzione è stata bollita su un'unica riga. Lambda non richiede una dichiarazione di ritorno.