Parliamo

project-cherry.dev

Fondamenta10 min

Funzioni

Organizza i calcoli ripetitivi della consulente fiscale Sara Conti in funzioni riutilizzabili: IVA, parcelle e analisi del fatturato.

Funzioni in Python

Sara Conti è una consulente fiscale che ogni giorno calcola IVA, genera parcelle e analizza fatturati. Senza funzioni, dovrebbe riscrivere gli stessi calcoli decine di volte. Le funzioni permettono di definire una volta e riutilizzare ovunque — rendendo il codice modulare e leggibile.

Definire una funzione — calcola_iva

La funzione più semplice prende un importo e restituisce l'IVA calcolata. La keyword def introduce la definizione, return restituisce il risultato.

python
def calcola_iva(importo, aliquota=22):
    """Calcola l'IVA su un importo dato."""
    iva = importo * aliquota / 100
    return iva

# Uso con aliquota standard
iva_parcella = calcola_iva(1500)
print(f"IVA al 22%: {iva_parcella:.2f} EUR")  # 330.00 EUR

# Uso con aliquota ridotta (beni di prima necessità)
iva_ridotta = calcola_iva(1500, aliquota=4)
print(f"IVA al 4%: {iva_ridotta:.2f} EUR")    # 60.00 EUR

Parametri predefiniti — genera_parcella

Quando Sara genera una parcella, alcuni dati sono quasi sempre gli stessi. I parametri con valori predefiniti evitano di ripetere le informazioni più comuni.

python
def genera_parcella(cliente, importo, aliquota_iva=22, valuta="EUR"):
    """Genera il riepilogo di una parcella professionale."""
    iva = importo * aliquota_iva / 100
    totale = importo + iva

    print(f"--- Parcella per {cliente} ---")
    print(f"Imponibile:  {importo:.2f} {valuta}")
    print(f"IVA ({aliquota_iva}%):   {iva:.2f} {valuta}")
    print(f"Totale:      {totale:.2f} {valuta}")

    return totale

# Sara genera parcelle con parametri diversi
genera_parcella("Avv. Marco Rossi", 3000)
genera_parcella("Bottega Ferraro", 800, aliquota_iva=10)

Più valori di ritorno — analizza_fatturato

Python permette di restituire più valori con le tuple. Utilissimo quando una funzione deve comunicare più risultati, come l'analisi di un trimestre fiscale.

python
def analizza_fatturato(fatture):
    """Analizza una lista di importi fatture."""
    totale = sum(fatture)
    media = totale / len(fatture)
    massimo = max(fatture)
    minimo = min(fatture)
    return totale, media, massimo, minimo

# Fatture del trimestre di Sara
fatture_q1 = [1200, 3500, 800, 2200, 1500, 4000]

totale, media, massimo, minimo = analizza_fatturato(fatture_q1)
print(f"Fatturato Q1: {totale:.2f} EUR")
print(f"Media per fattura: {media:.2f} EUR")
print(f"Fattura più alta: {massimo:.2f} EUR")
print(f"Fattura più bassa: {minimo:.2f} EUR")

Quando creare una funzione

Una regola pratica: se ti trovi a copiare e incollare lo stesso blocco di codice, è il momento di creare una funzione. Ecco i segnali:

  • Lo stesso calcolo appare in più punti del programma
  • Un blocco di codice fa una cosa specifica e autocontenuta
  • Vuoi poter testare un pezzo di logica in isolamento
  • Il codice diventa difficile da leggere senza una struttura

Le funzioni ben scritte fanno una cosa sola, hanno un nome descrittivo e accettano parametri per essere flessibili.

Da ricordare

  • Definisci con def nome(parametri): e restituisci con return
  • I parametri predefiniti evitano ripetizioni: def f(x, aliquota=22)
  • Python permette di restituire più valori: return a, b, c
  • Le variabili dentro una funzione sono locali e non visibili all'esterno
  • Crea una funzione ogni volta che un blocco di codice si ripete o diventa troppo lungo