Funzioni Lambda Python: guida alle funzioni anonime

Scopri come scrivere funzioni lambda anonime in Python. Padroneggia modelli di programmazione funzionale utilizzando map(), filter() e sorted() con sintassi lambda.

Prova nell'editor

Panoramica

In Python, le funzioni lambda, note anche come funzioni anonime, sono funzioni piccole, veloci, di una riga che non richiedono la parola chiave standard "def" o un nome formale. Sono pensati per un utilizzo temporaneo e rapido e consentono di passare la logica funzionale come argomento direttamente in linea. Ciò rende il codice più compatto, riducendo il sovraccarico di scrittura di funzioni di supporto complete che vengono chiamate solo in un posto.

La sintassi di una funzione lambda è semplice: "argomenti lambda: espressione". A differenza delle funzioni standard, una lambda non ha un'istruzione `return` esplicita; l'espressione viene valutata e restituita automaticamente. Inoltre, le funzioni lambda sono limitate a una singola espressione, il che significa che non è possibile scrivere cicli complessi su più righe, assegnazioni o blocchi di condizioni al loro interno, applicando un approccio pulito e funzionale.

Le funzioni Lambda vengono comunemente utilizzate in combinazione con funzioni integrate di ordine superiore come "map()" (che applica una funzione a ogni elemento in un elenco), "filter()" (che conserva gli elementi che corrispondono a una condizione) e "sorted()" (che ordina gli elementi utilizzando una chiave di ordinamento personalizzata). Ad esempio, ordinare un elenco di dizionari in base a una chiave di dizionario specifica è un gioco da ragazzi quando si utilizza una lambda come chiave di ordinamento. Comprendere le funzioni lambda ti offre uno strumento vitale per scrivere codice Python pulito.

Codice e output di esecuzione

Ordinamento di elenchi di dizionari complessi e filtraggio di set di dati utilizzando funzioni anonime in linea.

lambda_demo.py
Prova nell'editor
# Sorting using lambda
students = [
    {"name": "Alice", "grade": 88},
    {"name": "Bob", "grade": 95},
    {"name": "Charlie", "grade": 90}
]

# Sort students by grade (descending)
sorted_students = sorted(students, key=lambda s: s["grade"], reverse=True)
print("Sorted students by grade:")
for student in sorted_students:
    print(f"- {student['name']}: {student['grade']}")

# Filtering using lambda
numbers = [1, 2, 3, 4, 5, 6, 7, 8]
odd_numbers = list(filter(lambda x: x % 2 != 0, numbers))
print(f"\nOdd numbers: {odd_numbers}")
Uscita terminale
Sorted students by grade:
- Bob: 95
- Charlie: 90
- Alice: 88

Odd numbers: [1, 3, 5, 7]

Implementazione passo dopo passo

  • Passaggio di criteri di ordinamento personalizzati a list.sort() e sorted()
  • Applicazione di trasformazioni in linea nelle pipeline di data science
  • Definizione di callback rapidi nelle app dell'interfaccia utente basate sugli eventi

Domande frequenti

Una funzione lambda può accettare più argomenti?

Sì, puoi definire più argomenti separati da virgole, ad esempio lambda x, y: x + y.

Perché le funzioni lambda sono chiamate anonime?

Perché vengono creati senza associazione di nomi, a differenza delle funzioni def che registrano un nome specifico nello spazio dei nomi locale.

Argomenti correlati

Risorse Python consigliate

Espandi le tue conoscenze con tutorial interattivi, foglietti illustrativi e confronti di codici correlati.