Le funzioni sono blocchi di codice riutilizzabili che eseguono un compito specifico.
I parametri sono valori che passiamo alle funzioni per personalizzarne il comportamento.
Lo scope definisce dove una variabile è visibile e utilizzabile nel codice.
Anatomia di una Funzione
Nome
Identificativo della funzione: calcola_media, trova_massimo
Parametri (Input)
Valori in ingresso che la funzione riceve ed elabora
Ritorno (Output)
Valore che la funzione restituisce dopo l'elaborazione
PSEUDOCODICE
// Funzione senza parametri
FUNZIONE saluta()
STAMPA "Ciao a tutti!"
FINE FUNZIONE
// Funzione con parametri
FUNZIONE somma(x, y)
RESTITUISCI x + y
FINE FUNZIONE
// Funzione con più parametri
FUNZIONE calcola_media(a, b, c)
totale = a + b + c
media = totale / 3
RESTITUISCI media
FINE FUNZIONE
// Utilizzo
risultato = somma(5, 7) // 12
media_voti = calcola_media(24, 27, 30) // 27
PYTHON
# Funzione base
def saluta():
print("Ciao a tutti!")
# Funzione con parametri
def somma(x, y):
return x + y
# Funzione con parametri e logica
def calcola_sconto(prezzo, percentuale):
sconto = prezzo * (percentuale / 100)
prezzo_finale = prezzo - sconto
return prezzo_finale
# Funzione con parametri di default
def potenza(base, esponente=2):
return base ** esponente
# Utilizzo
risultato = somma(5, 7) # 12
prezzo_scontato = calcola_sconto(100, 20) # 80.0
quadrato = potenza(5) # 25 (usa default)
cubo = potenza(5, 3) # 125
Scope (Ambito) delle Variabili
Lo scope determina dove una variabile può essere utilizzata. Esistono due tipi principali:
Scope Globale
Variabili definite fuori dalle funzioni, visibili ovunque nel programma
Scope Locale
Variabili definite dentro una funzione, visibili solo in quella funzione
Regola d'Oro
Preferisci parametri espliciti piuttosto che variabili globali per funzioni chiare
PYTHON - ESEMPIO SCOPE
# Variabile globale
valore_globale = 10
def funzione_esempio():
# Variabile locale
valore_locale = 5
# Posso accedere sia a globale che locale
risultato = valore_globale + valore_locale
return risultato # 15
def funzione_con_parametri(x):
# x è un parametro locale
# Meglio usare parametri che dipendere da globali
return x * 2
# Utilizzo
print(funzione_esempio()) # 15
print(funzione_con_parametri(7)) # 14
# Questa riga causerebbe errore:
# print(valore_locale) # ERRORE: valore_locale non è visibile qui!
Best Practice per le Funzioni
- Single Responsibility: Ogni funzione dovrebbe fare una cosa sola
- Nomi Descrittivi: Il nome deve indicare chiaramente cosa fa la funzione
- Parametri Espliciti: Evita dipendenze da variabili globali
- Documentazione: Commenta cosa fa la funzione, i parametri e il ritorno
- Riutilizzo: Scrivi funzioni che possano essere riutilizzate in contesti diversi