Una guida per principianti per comprendere le funzioni Lambda di Python
Lambdas in Python è una delle funzioni più utili, importanti e interessanti da conoscere. Sfortunatamente, sono anche facili da fraintendere e sbagliare.
In questo articolo, spiegheremo tutto ciò che devi sapere su queste funzioni misteriose, come usarle e perché sono utili.
Prima di immergerti in questi esempi pratici, potresti voler configurare un ambiente virtuale Python Scopri come utilizzare l'ambiente virtuale Python Scopri come usare l'ambiente virtuale Python Se sei uno sviluppatore Python esperto, o sei appena iniziato, scopri come configurare un ambiente virtuale è essenziale per qualsiasi progetto Python. Leggi di più . Se non vuoi nemmeno farlo, allora dovresti almeno provare questi esempi con una shell Python online interattiva Prova Python nel tuo browser con questi gusci interattivi online gratuiti Prova Python nel tuo browser con questi gusci interattivi online gratis esaminando questi esempi di Python o rivedendo le basi degli array e degli elenchi, puoi testare il codice direttamente nel tuo browser. Ecco i migliori interpreti Python online che abbiamo trovato. Leggi di più .
Cos'è un Lambda in Python?
Un lambda è semplicemente un modo per definire una funzione in Python. A volte sono conosciuti come “operatori lambda” o “funzioni lambda”.
Se hai già usato Python, probabilmente hai definito le tue funzioni usando il DEF parola chiave, e ha funzionato bene per voi finora. Quindi, perché c'è un altro modo per fare la stessa cosa?
La differenza è che le funzioni lambda sono anonime. Significato, sono funzioni che non hanno bisogno di essere nominate. Sono utilizzati per creare piccole funzioni una tantum nei casi in cui a “vero” la funzione sarebbe troppo grande e voluminosa.
Lambdas restituisce un oggetto funzione, che può essere assegnato a una variabile. Lambdas può avere un numero qualsiasi di argomenti, ma possono avere solo un'espressione. Non è possibile chiamare altre funzioni all'interno di lambda.
L'uso più comune delle funzioni lambda è nel codice che richiede una semplice funzione a una riga, in cui sarebbe eccessivo scrivere una funzione normale completa. Questo è trattato in maggior dettaglio sotto, sotto “Informazioni sulla mappa, sui filtri e sulla riduzione?”.
Come usare Lambdas in Python
Prima di guardare una funzione lambda, diamo un'occhiata a una funzione di base super definita “tradizionale” modo:
def add_five (number): numero di ritorno + 5 print (add_five (number = 4))
Questa funzione è molto semplice, ma serve a illustrare lambda. Il tuo può essere più complesso di questo. Questa funzione aggiunge cinque a qualsiasi numero passato attraverso il numero parametro.
Ecco come appare come una funzione lambda:
add_five = numero lambda: numero + 5 stampa (add_five (numero = 4))
Piuttosto che usare DEF, la parola lambda viene usato. Non sono richieste parentesi, ma qualsiasi parola che segue il lambda le parole chiave sono create come parametri. I due punti vengono utilizzati per separare i parametri e l'espressione. In questo caso, l'espressione è numero + 5.
Non c'è bisogno di usare il ritorno parola chiave: il lambda lo fa automaticamente per te.
Ecco come crei una funzione lambda con due argomenti:
add_numbers_and_five = lambda number1, number2: number1 + number2 + 5 print (add_numbers_and_five (number1 = 4, number2 = 3))
Se non sei ancora sicuro del punto di lambda, la sezione successiva si immergerà e ti aiuterà a vedere la luce.
Python Lambdas con mappa, filtro e riduzione
La libreria principale di Python ha tre metodi chiamati carta geografica, ridurre, e filtro. Questi metodi sono probabilmente i migliori motivi per utilizzare le funzioni lambda.
Il carta geografica la funzione prevede due argomenti: una funzione e una lista. Prende quella funzione e la applica a tutti gli elementi della lista, restituendo l'elenco degli elementi modificati come oggetto della mappa. Il elenco la funzione viene utilizzata per convertire nuovamente l'oggetto della mappa risultante in un elenco.
Ecco come utilizzare la mappa senza lambda:
list1 = [2, 4, 6, 8] stampa (lista1) def add_five (numero): numero restituito + 5 nuova_elenco = lista (mappa (add_five, lista1)) stampa (nuova lista)
Questa funzione mappa è abbastanza utile, ma potrebbe essere migliore. il add_five la funzione viene passata come argomento, ma cosa succede se non si desidera creare una funzione ogni volta che si utilizza la mappa? Puoi usare invece una lambda!
Ecco come appare lo stesso codice, solo con la funzione sostituita da un lambda:
lista1 = [2, 4, 6, 8] stampa (lista1) nuova_elenco = lista (mappa (lambda x: x + 5, lista1)) stampa (nuova lista)
Come puoi vedere, il tutto add_five la funzione non è più necessaria. Invece, la funzione lambda viene utilizzata per mantenere le cose in ordine.
Con il filtro funzione, il processo è più o meno lo stesso. Filtro prende una funzione e la applica a tutti gli elemen in una lista e crea una nuova lista con solo gli elementi che hanno causato il ritorno della funzione True.
Innanzitutto, senza lambdas:
numeri = [1, 4, 5, 10, 20, 30] stampa (numeri) def greater_than_ten_func (numero): se numero> 10: restituisce True else: restituisce False new_numbers = elenco (filtro (greater_than_ten_func, numeri)) print (new_numbers )
Non c'è niente di sbagliato in questo codice, ma sta diventando un po 'lungo. Vediamo quante linee può rimuovere una lambda:
numeri = [1, 4, 5, 10, 20, 30] stampa (numeri) new_numbers = lista (filtro (lambda x: x> 10, numeri)) stampa (new_numbers)
La funzione lambda ha sostituito la necessità del tutto greater_than_ten_func! E lo ha fatto in cinque semplici parole. Ecco perché i lambda sono potenti: riducono il disordine per compiti semplici.
Infine, diamo un'occhiata ridurre. Riduci è un'altra fantastica funzione di Python. Applica un calcolo progressivo a tutti gli elementi di un elenco. Puoi usarlo per calcolare una somma totale o moltiplicare tutti i numeri insieme:
da functools import reduce numeri = [10, 20, 30, 40] stampa (numeri) def estate (a, b): restituisce a + b risultato = riduce (estate, numeri) stampa (risultato)
Questo esempio deve essere importato ridurre dal functools modulo, ma non preoccuparti, il modulo functools fa parte della libreria di base Python.
La storia è molto simile a un lambda, non c'è bisogno di una funzione:
da functools import reduce numeri = [10, 20, 30, 40] stampa (numeri) risultato = riduci (lambda a, b: a + b, numeri) stampa (risultato)
Cose da tenere d'occhio con Python Lambdas
Questi esempi hanno mostrato quanto siano agevoli le funzioni lambda, insieme alla mappa, al filtro e alla riduzione, dalla libreria principale Python. Tuttavia, ci sono alcuni usi in cui le funzioni lambda non aiutano.
Se stai facendo qualcosa di più di un'attività di base, o vuoi chiamare altri metodi, usa una funzione normale. Lambdas è ottimo per una funzione anonima, ma devono avere una sola espressione. Se il tuo lambda inizia ad apparire come un'espressione regolare, allora è probabilmente il momento di refactoring in un metodo dedicato.
Per ulteriori suggerimenti, consulta la nostra guida alla programmazione orientata agli oggetti in Python Guida per principianti alla programmazione orientata agli oggetti di Python Guida per principianti alla programmazione orientata agli oggetti di Python Per sfruttare appieno i punti di forza di Python, ti consigliamo di imparare come funziona Python programmazione orientata agli oggetti (OOP). Leggi di più e consulta la nostra guida alle domande frequenti per i principianti Python Le domande più frequenti sulla programmazione Python Le domande più frequenti sulla programmazione Python In questo articolo ti illustreremo tutto ciò che devi sapere su Python come principiante. Leggi di più .
Scopri di più su: Esercitazioni di codifica, Python.