Funzioni in Python
Questo articolo spiega le funzioni in Python.
YouTube Video
Funzioni in Python
Le funzioni in Python sono una funzionalità essenziale per definire blocchi di codice riutilizzabili, consentendoti di organizzare e semplificare il tuo programma richiamandole secondo necessità. L'uso delle funzioni può migliorare la leggibilità del codice e rispettare il principio DRY (Don't Repeat Yourself, evitare di scrivere lo stesso codice più volte).
Definire le Funzioni
Le funzioni sono definite utilizzando la parola chiave def. La sintassi di base è la seguente:.
1def function_name(arg1, arg2, ..., argN):
2 """docstring (A brief description of the function)"""
3 processing
4 return return_valueAd esempio, per definire una funzione che somma due numeri, scriveresti:.
1def add(x, y):
2 """A function that adds two numbers and returns the result"""
3 return x + yRichiamare le Funzioni
Una funzione definita può essere richiamata e utilizzata come segue:.
1result = add(3, 4)
2print(result) # Output: 7Componenti di una Funzione
-
Nome della funzione
- Il nome della funzione, usato quando viene chiamata.
-
Argomenti (Parametri)
- I nomi delle variabili che ricevono i dati passati al momento della chiamata. Puoi definire zero o più argomenti.
-
Stringa di documentazione (Docstring)
- Una stringa che descrive lo scopo e l'utilizzo della funzione. Opzionale.
-
Corpo della funzione
- Un blocco indentato dove vengono scritte le istruzioni eseguite dalla funzione.
-
Valore di ritorno
- Il valore restituito al chiamante utilizzando l'istruzione
return. Sereturnviene omesso, viene restituitoNoneper impostazione predefinita.
- Il valore restituito al chiamante utilizzando l'istruzione
Tipi di Argomenti
In Python, esistono diversi tipi di argomenti.
- Argomenti posizionali
- Il modo abituale di passare gli argomenti a una funzione.
- Argomenti predefiniti
- Assegna valori predefiniti agli argomenti così possono essere omessi durante la chiamata della funzione.
1def greet(name, message="Hello"):
2 print(f"{message}, {name}")
3
4greet("Alice") # "Hello, Alice"
5greet("Bob", "Good morning") # "Good morning, Bob"- Argomenti a lunghezza variabile
argsriceve più argomenti posizionali come una tupla, ekwargsli riceve come un dizionario.
1def func(*args, **kwargs):
2 print("args:", args)
3 print("kwargs:", kwargs)
4
5func(1, 2, 3, a=4, b=5)
6# Output:
7# args: (1, 2, 3)
8# kwargs: {'a': 4, 'b': 5}Utilizzando correttamente le funzioni, puoi scrivere programmi Python in modo più efficace ed efficiente.
Funzioni Lambda in Python
In Python, le funzioni lambda sono utilizzate per definire funzioni anonime e concise. A differenza delle funzioni definite con la parola chiave def, lambda permette di creare funzioni brevi in una sola riga. Qui spiegheremo in dettaglio le funzioni lambda in Python.
Basi delle funzioni lambda
Le funzioni lambda, chiamate anche funzioni anonime, sono utilizzate per definire funzioni temporanee prive di nome, come suggerisce il nome. La sintassi di base è la seguente:.
1lambda arguments: expressionargomenti- Specifica gli argomenti di una funzione. È possibile specificare più argomenti, separandoli con una virgola.
espressione- Un'espressione valutata in base agli argomenti. Il risultato dell'espressione diventa il valore di ritorno della funzione.
Ad esempio, il codice seguente definisce ed esegue una funzione lambda che somma due numeri.
1add = lambda x, y: x + y
2print(add(5, 3)) # Output: 8In questo esempio, lambda x, y: x + y è una funzione lambda che accetta due argomenti, x e y, e restituisce la loro somma.
Casi d'uso delle funzioni lambda
Le funzioni lambda sono utili in situazioni in cui è necessario definire una funzione semplice al volo. Sono particolarmente comuni nei seguenti casi:.
-
Quando vengono passate come argomenti a funzioni
- È utile nelle funzioni di ordine superiore (funzioni che accettano altre funzioni come argomenti) quando si passano funzioni brevi e temporanee.
-
Quando si specificano chiavi per l'ordinamento di liste
- Sono utili per specificare criteri di ordinamento (chiavi) in funzioni come
sort()osorted().
- Sono utili per specificare criteri di ordinamento (chiavi) in funzioni come
Esempi di utilizzo nelle funzioni di ordine superiore
Esempi tipici di funzioni di ordine superiore includono map(), filter() e reduce(). Queste funzioni accettano altre funzioni come argomenti e le applicano a sequenze come liste.
1numbers = [1, 2, 3, 4, 5]
2squared = list(map(lambda x: x ** 2, numbers))
3print(squared) # Output: [1, 4, 9, 16, 25]In questo esempio, una funzione lambda viene passata alla funzione map() per calcolare il quadrato di ciascun numero in una lista.
Esempi di utilizzo dell'ordinamento delle liste
La funzione lambda può talvolta essere utilizzata per specificare una chiave personalizzata durante l'ordinamento di una lista. Ad esempio, il seguente codice ordina una lista di tuple in base al secondo elemento.
1pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
2pairs.sort(key=lambda pair: pair[1])
3print(pairs)
4# Output: [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]In questo esempio, una funzione lambda è utilizzata per ordinare le tuple in base al loro secondo elemento (una stringa).
filter() e lambda
La funzione filter() viene utilizzata per filtrare elementi in una lista (o in un altro iterabile) in base a una condizione specifica.
1numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
2even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
3print(even_numbers) # Output: [2, 4, 6, 8]In questo esempio, i numeri pari in una lista vengono filtrati per creare una nuova lista.
lambda e reduce()
La funzione reduce() viene utilizzata per ridurre una lista a un unico valore. Può essere implementata facilmente utilizzando una funzione lambda.
1from functools import reduce
2
3numbers = [1, 2, 3, 4, 5]
4product = reduce(lambda x, y: x * y, numbers)
5print(product) # Output: 120In questo esempio, tutti gli elementi nella lista vengono moltiplicati insieme per produrre un risultato.
Evita di utilizzare funzioni lambda complesse
Il vantaggio delle funzioni lambda è la loro brevità, ma diventano più difficili da leggere quando utilizzate per implementare logica complessa. Pertanto, è opportuno utilizzarle per operazioni semplici che possono essere espresse in una sola riga. Per operazioni complesse, definire una funzione con def è più leggibile e più facile da mantenere.
Ad esempio, dovresti evitare di utilizzare funzioni lambda complesse come quella riportata di seguito.
1# Complex and hard-to-read lambda function
2complex_func = lambda x, y: (x * 2 + y) if x > y else (x + y * 2)In questo caso, è meglio utilizzare una funzione definita con def, come mostrato di seguito.
1def complex_func(x, y):
2 if x > y:
3 return x * 2 + y
4 else:
5 return x + y * 2Conclusione
Le funzioni lambda di Python sono uno strumento comodo per definire funzioni temporanee e brevi. Sono spesso utilizzate in funzioni di ordine superiore o operazioni sulle liste per definire in modo conciso condizioni specifiche. Tuttavia, le funzioni lambda dovrebbero essere limitate a compiti semplici, mentre per logica complessa sono preferibili le funzioni def.
Puoi seguire l'articolo sopra utilizzando Visual Studio Code sul nostro canale YouTube. Controlla anche il nostro canale YouTube.