Questo sito utilizza cookie per raccogliere dati statistici.
Privacy Policy
# Funzioni in Python
Le **funzioni** sono uno dei concetti fondamentali in Python. Una funzione è un blocco di codice riutilizzabile che può essere chiamato in diversi punti del programma per eseguire una specifica operazione. Le funzioni permettono di evitare la ripetizione del codice, migliorano la leggibilità e facilitano la manutenzione dei programmi.
---
## Definire una funzione
In Python, le funzioni vengono definite utilizzando la parola chiave **`def`**, seguita dal nome della funzione, dalle parentesi tonde (che possono contenere parametri) e dai due punti `:`. Il blocco di codice della funzione è indentato.
### Sintassi di base
```python
def nome_funzione():
# Blocco di codice che esegue un'operazione
pass # 'pass' indica che non c'è codice qui (opzionale)
```
### Esempio: funzione semplice
```python
def saluta():
print("Ciao, benvenuto!")
# Chiamata della funzione
saluta() # Output: Ciao, benvenuto!
```
---
## Funzioni con parametri
Le funzioni possono accettare uno o più **parametri**. I parametri sono variabili che vengono passate alla funzione quando viene chiamata. Questi parametri consentono di fornire dati che la funzione utilizzerà al suo interno.
### Esempio con parametri
```python
def saluta_persona(nome):
print(f"Ciao, {nome}!")
saluta_persona("Alice") # Output: Ciao, Alice!
saluta_persona("Mario") # Output: Ciao, Mario!
```
In questo esempio, la funzione `saluta_persona()` accetta un parametro chiamato `nome` che viene utilizzato all'interno della funzione.
---
## Funzioni con valori di ritorno (return)
Le funzioni possono restituire un valore utilizzando la parola chiave **`return`**. Una volta eseguito il `return`, l'esecuzione della funzione si interrompe e il valore viene restituito al chiamante.
### Esempio con valore di ritorno
```python
def somma(a, b):
return a + b
risultato = somma(3, 4)
print(risultato) # Output: 7
```
In questo caso, la funzione `somma()` accetta due parametri, li somma e restituisce il risultato con `return`.
---
## Parametri con valori di default
È possibile assegnare dei **valori di default** ai parametri di una funzione. Se la funzione viene chiamata senza specificare quel parametro, verrà utilizzato il valore di default.
### Esempio di parametri con valori di default
```python
def saluta(nome="Amico"):
print(f"Ciao, {nome}!")
saluta() # Output: Ciao, Amico!
saluta("Francesco") # Output: Ciao, Francesco!
```
In questo esempio, il parametro `nome` ha un valore di default `"Amico"`. Se la funzione viene chiamata senza argomenti, utilizzerà quel valore di default.
---
## Funzioni con più parametri
Le funzioni possono accettare più parametri separati da virgole.
### Esempio con più parametri
```python
def moltiplica(a, b, c):
return a * b * c
risultato = moltiplica(2, 3, 4)
print(risultato) # Output: 24
```
In questo caso, la funzione `moltiplica()` accetta tre parametri e restituisce il prodotto dei tre numeri.
---
## Funzioni con argomenti variabili (Args e Kwargs)
Python consente di definire funzioni che possono accettare un numero arbitrario di argomenti. Questo si realizza utilizzando gli argomenti posizionali variabili `*args` o gli argomenti keyword variabili `**kwargs`.
### Argomenti Posizionali Variabili (`*args`)
Utilizzando `*args`, una funzione può accettare un numero variabile di argomenti.
```python
def somma_tutti(*numeri):
return sum(numeri)
risultato = somma_tutti(1, 2, 3, 4, 5)
print(risultato) # Output: 15
```
In questo esempio, la funzione `somma_tutti()` può accettare un numero variabile di numeri e restituire la loro somma.
### Argomenti Keyword Variabili (`**kwargs`)
Con `**kwargs`, una funzione può accettare un numero variabile di argomenti sotto forma di coppie chiave-valore.
```python
def stampa_informazioni(**dati):
for chiave, valore in dati.items():
print(f"{chiave}: {valore}")
stampa_informazioni(nome="Mario", eta=23, lavoro="Studente")
# Output:
# nome: Mario
# eta: 23
# lavoro: Studente
```
In questo esempio, la funzione `stampa_informazioni()` accetta argomenti con nome e li stampa in formato chiave-valore.
---
## Scope delle variabili (Locale e Globale)
Le variabili definite all'interno di una funzione hanno uno **scope locale**, cioè esistono solo all'interno della funzione stessa. Le variabili definite al di fuori delle funzioni hanno uno **scope globale** e possono essere accessibili da qualunque parte del programma.
### Esempio di scope locale
```python
def funzione():
x = 10 # Variabile locale
print(x)
funzione() # Output: 10
# print(x) genererà un errore, perché x non esiste fuori dalla funzione
```
### Esempio di scope globale
```python
x = 5 # Variabile globale
def funzione():
print(x)
funzione() # Output: 5
```