Una guida per principianti alla comprensione delle funzioni Lambda di Python

Una guida per principianti alla comprensione delle funzioni Lambda di Python

I Lambda in Python sono una delle funzionalità 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 misteriose funzioni, come usarle e perché sono utili.





Prima di immergerti in questi esempi pratici, potresti voler configurare un ambiente virtuale Python. Se non vuoi nemmeno farlo, dovresti almeno provare questi esempi con una shell Python online interattiva .





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 finora ha funzionato bene per te. Allora 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 una funzione 'reale' sarebbe troppo grande e ingombrante.

I Lambda restituiscono un oggetto funzione, che può essere assegnato a una variabile. I Lambda possono avere un numero qualsiasi di argomenti, ma possono avere solo un'espressione. Non puoi chiamare altre funzioni all'interno di lambda.





L'uso più comune delle funzioni lambda è nel codice che richiede una semplice funzione di una riga, dove sarebbe eccessivo scrivere una funzione normale completa. Questo è trattato in maggior dettaglio di seguito, in 'E per quanto riguarda la mappatura, il filtro e la riduzione?'.

Come usare Lambda in Python

Prima di esaminare una funzione lambda, diamo un'occhiata a una funzione super base definita nel modo 'tradizionale':





def add_five(number):
return number + 5

print(add_five(number=4))

Questa funzione è molto semplice, ma serve per illustrare le lambda. Il tuo potrebbe essere più complesso di così. Questa funzione aggiunge cinque a qualsiasi numero passato ad essa tramite il numero parametro.

Ecco come appare come funzione lambda:

add_five = lambda number: number + 5

print(add_five(number=4))

Piuttosto che usare def , la parola lambda viene utilizzato. Non sono necessarie parentesi, ma qualsiasi parola dopo il lambda le parole chiave vengono create come parametri. I due punti vengono utilizzati per separare i parametri e l'espressione. In questo caso, l'espressione è numero + 5 .

Non è necessario utilizzare il Restituzione parola chiave --- la lambda lo fa automaticamente per te.

Ecco come creeresti una funzione lambda con due argomenti:

come aggiungere una casella di testo in google docs
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 tufferà 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 forse 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 ogni elemento nell'elenco, restituendo l'elenco degli elementi modificati come oggetto della mappa. Il elenco viene utilizzata per convertire nuovamente l'oggetto mappa risultante in un elenco.

Ecco come usare la mappa senza lambda:

list1 = [2, 4, 6, 8]
print(list1)
def add_five(number):
return number + 5

new_list = list(map(add_five, list1))
print(new_list)

Questa funzione della mappa è abbastanza utile, ma potrebbe essere migliore. il aggiungi_cinque la funzione viene passata come argomento, ma cosa succede se non si desidera creare una funzione ogni volta che si utilizza map? Puoi invece usare una lambda!

Ecco come appare lo stesso codice, solo con la funzione sostituita da un lambda:

collegare il controller xbox one a Windows 10
list1 = [2, 4, 6, 8]
print(list1)

new_list = list(map(lambda x: x + 5, list1))
print(new_list)

Come puoi vedere, il tutto aggiungi_cinque 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 ogni elemento in un elenco e crea un nuovo elenco con solo gli elementi che hanno causato la restituzione della funzione True.

Primo, senza lambda:

numbers = [1, 4, 5, 10, 20, 30]
print(numbers)
def greater_than_ten_func(number):
if number > 10:
return True
else:
return False
new_numbers = list(filter(greater_than_ten_func, numbers))

print(new_numbers)

Non c'è niente di sbagliato in questo codice, ma sta diventando un po' lungo. Vediamo quante righe può rimuovere una lambda:

numbers = [1, 4, 5, 10, 20, 30]
print(numbers)
new_numbers = list(filter(lambda x: x > 10, numbers))
print(new_numbers)

La funzione lambda ha sostituito la necessità del tutto maggiore_di_ten_funzioni ! E lo ha fatto in cinque semplici parole. Questo è il motivo per cui le lambda sono potenti: riducono il disordine per compiti semplici.

Infine, diamo un'occhiata a ridurre . Riduci è un'altra fantastica funzione di Python. Applica un calcolo a rotazione a tutti gli elementi in un elenco. Puoi usarlo per calcolare una somma totale o moltiplicare tutti i numeri insieme:

from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)
def summer(a, b):
return a + b

result = reduce(summer, numbers)
print(result)

Questo esempio deve essere importato ridurre dal strumenti funzionali modulo, ma non preoccuparti, il modulo functools fa parte della libreria principale di Python.

La storia è molto simile con una lambda, non c'è bisogno di una funzione:

from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)

result = reduce(lambda a, b: a + b, numbers)
print(result)

Cose a cui prestare attenzione con Python Lambdas

Questi esempi hanno mostrato quanto siano semplici le funzioni lambda, insieme a mappare, filtrare e ridurre, dalla libreria principale di 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. I lambda sono ottimi per funzioni anonime una tantum, ma devono avere solo una singola espressione. Se la tua lambda inizia a sembrare un'espressione regolare, allora è probabilmente il momento di eseguire il refactoring in un metodo dedicato.

Per ulteriori suggerimenti, controlla il nostro guida alla programmazione orientata agli oggetti in Python e dai un'occhiata alla nostra guida alle domande frequenti per i principianti di Python.

Condividere Condividere Tweet E-mail 3 modi per verificare se un'e-mail è reale o falsa

Se hai ricevuto un'email che sembra un po' dubbia, è sempre meglio verificarne l'autenticità. Ecco tre modi per sapere se un'e-mail è reale.

Leggi Avanti
Argomenti correlati
  • Programmazione
  • Pitone
  • Tutorial sulla programmazione
Circa l'autore Joe Coburn(136 articoli pubblicati)

Joe si è laureato in Informatica presso l'Università di Lincoln, nel Regno Unito. È uno sviluppatore di software professionista e quando non pilota droni o scrive musica, lo si può trovare spesso a scattare foto o produrre video.

Altro da Joe Coburn

Iscriviti alla nostra Newsletter

Iscriviti alla nostra newsletter per suggerimenti tecnici, recensioni, ebook gratuiti e offerte esclusive!

Clicca qui per iscriverti