Vai al contenuto principale

6 best practice di Python per scrivere codice migliore

Scopri le best practice di coding in Python per scrivere script Python di altissima qualità.
Aggiornato 29 set 2026  · 13 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Il coding è l’arte di scrivere le istruzioni – note anche come algoritmi – affinché un computer svolga un compito specifico. Per comunicare con i computer, gli sviluppatori usano i linguaggi di programmazione.

Proprio come le lingue naturali, come l’inglese, il russo o il quechua, i linguaggi di programmazione hanno un insieme specifico di regole sintattiche e semantiche che forniscono le basi per la comunicazione. Sebbene le lingue naturali siano più complesse, flessibili e dinamiche, questi attributi si applicano, in misura più limitata, anche ai linguaggi di programmazione. 

Anche l’algoritmo più semplice può essere scritto in molti modi diversi. Se da un lato una certa flessibilità è auspicabile nello sviluppo del codice, dall’altro può compromettere l’efficienza e la comunicazione efficace, soprattutto quando ci lavorano più persone.

Per questo motivo, la leggibilità è un aspetto fondamentale nella scrittura del codice. Per assicurare che gli sviluppatori siano allineati, la maggior parte dei linguaggi di programmazione ha sviluppato degli standard di codifica. Questi documenti forniscono linee guida e best practice per produrre codice leggibile, mantenibile e scalabile. 

In questo articolo scopriremo le best practice per scrivere codice in Python, uno dei linguaggi più popolari nella data science. Le pratiche presentate nelle sezioni seguenti sono per lo più basate su PEP 8, la guida standard per scrivere codice in Python.

Dai un’occhiata al nostro articolo o al corso Introduzione a Python per scoprire di più su come si usa Python. 

Che cos’è PEP 8?

“Il codice viene letto molto più spesso di quanto venga scritto. Il codice dovrebbe sempre essere scritto in modo da promuoverne la leggibilità” – Guido van Rossum, l’inventore di Python

PEP 8 è una guida di stile per il codice Python. Scritto nel 2001 da Guido van Rossum, Barry Warsaw e Nick Coghlan, fornisce una serie di raccomandazioni per scrivere codice più leggibile e coerente. Copre tutto: da come nominare le variabili al numero massimo di caratteri che dovrebbe avere una riga. 

PEP sta per Python Enhancement Proposal. Un PEP è un documento che descrive le nuove funzionalità proposte per Python e documenta aspetti di Python, come progettazione e stile.

Anche se non è obbligatorio, gran parte della community Python usa PEP 8. È quindi altamente consigliabile seguire le linee guida. Così facendo, migliorerai le tue credenziali come programmatore professionista. 

Nonostante l’ampia adozione di PEP 8, le linee guida potrebbero non adattarsi a tutti gli scenari particolari. In questi casi, le aziende spesso definiscono le proprie convenzioni.

Best practice di Python 

1. Best practice di Python per la qualità del codice

Scrivere codice leggibile e organizzato può fare la differenza e migliorare le tue prospettive di carriera. Anche se il coding può sembrare un processo meccanico e complesso per i principianti, la verità è che il coding è un’arte. 

Ci sono molti consigli che puoi seguire per aumentare la qualità del codice in Python. Ecco un elenco di alcuni dei più rilevanti.

La tirannia dell’indentazione

L’indentazione si riferisce agli spazi all’inizio di una riga di codice. Mentre in altri linguaggi di programmazione l’indentazione serve solo a migliorare la leggibilità, in Python è obbligatoria. Python usa l’indentazione per aprire un blocco di codice. Più precisamente, 4 spazi consecutivi per livello di indentazione, come mostrato nel seguente codice:

for number in [1,2,3,4]:
    if number % 2 == 0:
        print(number)
    else:
        continue

Lunghezza massima della riga

PEP 8 raccomanda che nessuna riga superi i 79 caratteri. Ha senso: le righe più corte sono più facili da leggere. Inoltre, questa lunghezza ti permette di avere più file aperti uno accanto all’altro.

Righe vuote

Circonda le definizioni di funzioni e classi di primo livello con due righe vuote. Le definizioni dei metodi all’interno di una classe sono separate da una singola riga vuota. Righe vuote extra possono essere usate (con parsimonia) per separare gruppi di funzioni correlate. Infine, usa righe vuote nelle funzioni (con parsimonia) per indicare sezioni logiche. 

Usa linters e autoformatter

La padronanza del codice richiede tempo. Prestare attenzione a tutti i dettagli mentre si scrive può essere impegnativo e dispendioso. Per fortuna, le macchine, in particolare linters e formatter, possono aiutarci a garantire la qualità del codice. 

I linters eseguono un’analisi statica del sorgente e verificano discrepanze semantiche. I formatter sono strumenti simili che cercano di ristrutturare spaziatura del codice, lunghezza delle righe, posizionamento degli argomenti e così via, per assicurare che il tuo codice abbia un aspetto coerente tra file o progetti diversi. Python ti offre una pletora di linters e formatter tra cui scegliere.

Tieni a mente i principi

Alcune delle regole sopra menzionate sono lineari, ma spesso il coding riguarda il buon gusto e l’intuizione. Per diventare un artista del codice, dovresti conoscere alcuni dei principi alla base di Python. Un ottimo esempio è lo Zen di Python, trattato in un articolo a parte.  

2. Best practice di Python per il logging

Il logging è un modo per tracciare gli eventi che accadono quando un software è in esecuzione. Soprattutto quando le applicazioni crescono in dimensioni e complessità, il logging diventa una tecnica fondamentale per sviluppare, effettuare il debug, eseguire e monitorare le prestazioni.  

Il modulo logging fa parte della Libreria Standard di Python dalla versione 2.3 per affrontare le pratiche di logging. È il primo pacchetto di riferimento per la maggior parte degli sviluppatori Python in materia di logging e è descritto ampiamente in PEP 282.

Il logging è simile, nello spirito, a una funzione di stampa. Tuttavia, una print manca di molte informazioni che potrebbero essere utili a uno sviluppatore. Il logging, invece, può registrare timestamp e numero di riga in cui si è verificato l’errore. Può anche scrivere errori o altre informazioni su file, socket, ecc.

Per importare il modulo, ti basta eseguire questo codice:

import logging

Non tutti i messaggi di log sono uguali. Il modulo fornisce infatti una categoria di livelli di logging in base alla gravità del messaggio. Sono i seguenti:

  • NOTSET (0): significa che tutti i messaggi verranno registrati.
  • Debug (10): utile per diagnosticare problemi nel codice. 
  • Info (20): può essere usato per confermare che non ci sono bug nel codice. Un buon caso d’uso del logging a livello info è tracciare l’avanzamento dell’addestramento di un modello di machine learning. 
  • Warning (30): indicativo di un problema che potrebbe verificarsi in futuro. Per esempio, potrebbe essere emesso un warning per un modulo che potrebbe essere deprecato in futuro o un avviso di poca RAM. 
  • Error (40): un bug serio nel codice; potrebbe essere un errore di sintassi, un out-of-memory o un’eccezione. 
  • Critical (50): un errore a causa del quale il programma potrebbe smettere di funzionare o terminare in modo anomalo.
import logging
logging.info('This message is just informative')
logging.debug('My missions is to provide information about debugging.')
logging.critical("A Critical Logging Message")

Detto questo, qui sotto trovi un elenco di sei best practice per gestire il logging in Python.  

Usa i log invece delle print

Abbiamo detto che i log forniscono informazioni in modo simile alle print. Tuttavia, i log sono molto più potenti e possono offrire informazioni più granulari. 

Può essere allettante ricorrere alla funzione print, soprattutto se non hai familiarità con le routine di logging, ma i log saranno sempre l’opzione più sicura. Sono più adatti a scalare e a gestire applicazioni complesse. 

Il web è pieno di guide e documentazione. Per esempio, questo tutorial sul logging di DataCamp potrebbe fare al caso tuo per iniziare.

Usa il modulo logging 

Questo modulo è l’opzione di riferimento per la maggior parte degli sviluppatori Python. Ciò significa che è ben mantenuto e supportato da una community enorme che avrà sempre una risposta ai tuoi dubbi.

Scegli con attenzione il livello di logging

Il modulo logging prevede sei livelli diversi di messaggi. Ognuno è pensato per uno scopo specifico. Più ti attieni a essi, più sarà facile per te e per gli utenti capire cosa sta succedendo nel tuo codice.

Usa i timestamp nel logging

Questa è una caratteristica fondamentale dei log che le print non hanno. Oltre a sapere dove è comparso un problema, è importante sapere quando è accaduto. I timestamp sono i tuoi migliori alleati in queste situazioni. Assicurati di usare il formato standard per scriverli, cioè l’ISO-8601.

Svuota il cestino dei log

Usa classi RotatingFileHandler, come TimedRotatingFileHandler, invece di FileHandler, per archiviare, comprimere o eliminare i file di log vecchi ed evitare problemi di spazio. Queste classi liberano spazio una volta raggiunto un limite di dimensione o soddisfatta una condizione temporale.

3. Best practice di Python per i commenti

I commenti sono molto importanti per lasciare annotazioni ai futuri lettori del nostro codice. Sebbene sia difficile definire come il codice debba essere commentato, ci sono alcune linee guida che possiamo seguire: 

  • Qualsiasi commento che contraddice il codice è peggio di nessun commento. Per questo è molto importante aggiornare codice e commenti per evitare incongruenze. 
  • I commenti devono essere frasi complete, con la prima lettera maiuscola. 
  • Cerca di scrivere i commenti in inglese. Anche se ognuno è libero di scriverli nella lingua che ritiene opportuna, è consigliato usare l’inglese. 
  • Assicurati che i tuoi commenti siano chiari e facilmente comprensibili a chi parla la lingua in cui stai scrivendo.

Esistono due tipi di commenti: commenti a blocco e commenti inline. 

Un commento a blocco spiega il codice che lo segue. In genere, si rientra il commento a blocco allo stesso livello del blocco di codice. Ogni riga di un commento a blocco inizia con un # e uno spazio singolo, come segue:

# This is a block comment
print('Welcome to DataCamp!")

I commenti inline, invece, compaiono alla stessa altezza del codice. I commenti inline dovrebbero essere separati dall’istruzione da almeno due spazi. Analogamente a un commento a blocco, un commento inline inizia con un singolo cancelletto (#) ed è seguito da uno spazio e da una stringa di testo. 

print ("Have you ever tried Python?") # This is an inline comment

4. Best practice di Python per le docstring

Una docstring è una stringa letterale che compare come prima istruzione nella definizione di un modulo, funzione, classe o metodo. In genere, si usa una stringa di documentazione per generare automaticamente la documentazione del codice. In quanto tale, una docstring può essere accessibile a runtime tramite l’attributo speciale obj.__doc__ di quell’oggetto.

Per coerenza, le docstring sono sempre racchiuse tra triple virgolette doppie (""").

Esistono due forme di docstring: monoriga e multiriga. Le monoriga sono per casi davvero ovvi. Dovrebbero stare davvero su una sola riga. Il seguente esempio illustra una docstring monoriga nella funzione multiply():

def multiply(x, y):
    """ Return the product of two numbers """
    result = x * y
    return result

Le docstring multiriga, invece, possono estendersi su più righe. Una docstring di questo tipo dovrebbe documentare la funzione dello script, la sintassi da riga di comando, le variabili d’ambiente e i file. I messaggi di utilizzo possono essere piuttosto elaborati e dovrebbero essere sufficienti per permettere a un nuovo utente di usare correttamente il comando.

def calculate_salary(hours, price=20):
    """ Return the salary according to the hours worked

    Arguments:
    hours: total hours investe
    price: price of each hours worked. Minimum price is 20 dollars
    """
    salary = hours * price
    return salary

Una spiegazione più dettagliata delle docstring è disponibile in PEP257.

5. Best practice di Python per la documentazione

Se i commenti sono importanti per aiutare altri sviluppatori con cui lavori a capire il tuo codice, la documentazione serve ad aiutare una community di potenziali utenti a imparare a usare il tuo software. Questo è un passaggio fondamentale: non importa quanto sia buono il tuo software, se la documentazione non è abbastanza valida, o peggio, manca, le persone non lo useranno. 

Includere un file README è sempre una buona pratica, specialmente se stai lavorando a un nuovo progetto. Questi file sono normalmente il punto d’ingresso principale per chi legge il tuo codice e includono informazioni generali sia per gli utenti sia per i manutentori del progetto. 

Anche se conciso, il file README dovrebbe spiegare lo scopo del progetto, l’URL della fonte principale del software e le informazioni sui crediti.

Allo stesso modo, dovresti sempre includere un file setup.py, assicurandoti che il software o la libreria siano stati impacchettati e distribuiti con Distutils, lo standard per distribuire moduli Python.

Inoltre, se il tuo software richiede altre dipendenze o pacchetti per essere eseguito, dovresti includere un file requirements.txt che descriva le dipendenze necessarie e le loro versioni.

Infine, sei libero di aggiungere qualsiasi altra informazione ritieni rilevante per i potenziali utenti. Per esempio, è una buona pratica fornire esempi di come funziona il tuo pacchetto o le tue funzioni. 

6. Best practice di Python per gli ambienti virtuali 

Per garantire ordine e coerenza nei tuoi progetti di dati, è una buona pratica creare un ambiente virtuale per ogni progetto che inizi. 

Gli ambienti virtuali, noti anche come virtualenv, aiutano a disaccoppiare e isolare le versioni di Python e le librerie richieste per il tuo progetto e le relative versioni di pip. Questo consente agli utenti finali di installare e gestire il proprio set di software e versioni in modo indipendente da quelli forniti dal sistema. 

Per creare i virtualenv, dobbiamo prima installare il pacchetto richiesto, scrivendo la seguente riga di codice nel terminale:

pip install virtualenv

Per creare un nuovo virtualenv, il seguente comando farà la magia. Stiamo chiamando il nuovo virtualenv “new_venv”

python3 -m venv /path/to/new/virtual/environment/new_venv

Convenzioni di naming in Python

Uno degli errori più comuni tra gli sviluppatori Python alle prime armi è l’assegnazione impropria dei nomi a variabili, classi, funzioni, ecc. Le convenzioni di naming sono elementi fondamentali per garantire la leggibilità del codice.

PEP 8 spiega il modo standard di nominare gli oggetti in Python. Secondo le linee guida, i nuovi moduli e pacchetti (inclusi i framework di terze parti) dovrebbero essere scritti secondo questi standard, ma dove una libreria esistente ha uno stile diverso si preferisce la coerenza interna.

Dovresti evitare nomi troppo generici o troppo prolissi. Inoltre, gli identificatori usati nella libreria standard devono essere compatibili con ASCII, come descritto in PEP 3131.

# Bad naming:
data_structure, ríos_españa, dictionary_with_countries_and_capitals
# Good naming:
user_profile, stop_words, global_emissions_df

Di seguito trovi un elenco delle convenzioni di naming per gli oggetti più comuni in Python.

  • Pacchetti e moduli
    • I nomi dei pacchetti e dei moduli dovrebbero essere tutti in minuscolo
    • Gli underscore possono essere usati nel nome del pacchetto e del modulo solo se migliorano la leggibilità.
  • Classi
    • I nomi delle classi dovrebbero seguire la convenzione UpperCaseCamelCase
    • Le classi built-in di Python, tuttavia, sono tipicamente parole in minuscolo
  • Variabili di istanza, metodi e funzioni
    • I nomi delle variabili di istanza dovrebbero essere tutti in minuscolo
    • Usa l’underscore per aggiungere nuove parole alle istanze di variabili
    • Le variabili di istanza non pubbliche dovrebbero iniziare con un singolo underscore
  • Costanti
    • I nomi delle costanti devono essere completamente in maiuscolo
    • Usa l’underscore per aggiungere nuove parole alle costanti

Identificatore

Convenzione

Modulo

minuscolo

Classe

CapWords

Funzioni

minuscolo

Metodi

minuscolo

Variabili di tipo

CapWords

Costanti

MAIUSCOLO

Pacchetto

minuscolo

Conclusione

Apprendere a fondo le best practice di Python è essenziale per scrivere codice pulito, efficiente e mantenibile. Seguendo le linee guida su qualità del codice, logging, commenti e documentazione, e usando strumenti come gli ambienti virtuali, potrai fare in modo che i tuoi progetti siano più facili da gestire, collaborare e scalare.

Man mano che migliori le tue competenze in Python, valuta di esplorare risorse di apprendimento più approfondite per consolidare la tua comprensione di Python e della sua ampia gamma di applicazioni. Se cerchi una guida strutturata, dai un’occhiata a queste risorse:

Domande frequenti sulle best practice di Python

Perché è importante seguire le best practice di coding?

Per garantire leggibilità, qualità del codice e scalabilità durante le attività di sviluppo software.

Che cos’è un ambiente virtuale?

Un ambiente virtuale è uno strumento che separa le dipendenze di progetti diversi creando un ambiente isolato per ciascun progetto.

Che cos’è PEP 8?

È un documento che fornisce linee guida standard e best practice su come scrivere codice Python.

Che cos’è l’indentazione?

L’indentazione si riferisce agli spazi all’inizio di una riga di codice. Python usa l’indentazione per indicare un blocco di codice.

Che cos’è lo Zen di Python?

Lo Zen di Python è una raccolta di 19 "principi guida" per scrivere programmi che influenzano il design del linguaggio di programmazione Python.

Che cos’è una docstring?

Una docstring di Python è una stringa usata per documentare un modulo, una classe, una funzione o un metodo Python, così che i programmatori possano capire cosa fa senza dover leggere i dettagli dell’implementazione.

Quanti tipi di commenti sono comuni in Python?

Ci sono due tipi di commenti: commenti a blocco e commenti inline.


Javier Canales Luna's photo
Author
Javier Canales Luna
LinkedIn

Sono una data analyst freelance e collaboro con aziende e organizzazioni di tutto il mondo in progetti di data science. Sono anche un'insegnante di data science con oltre 2 anni di esperienza. Scrivo regolarmente articoli su temi legati alla data science in inglese e spagnolo, alcuni dei quali sono stati pubblicati su siti affermati come DataCamp, Towards Data Science e Analytics Vidhya. Come data scientist con un background in scienze politiche e diritto, il mio obiettivo è lavorare all'intersezione tra politiche pubbliche, diritto e tecnologia, sfruttando la forza delle idee per promuovere soluzioni e narrazioni innovative che ci aiutino ad affrontare le sfide urgenti, in primis la crisi climatica. Mi considero autodidatta, una persona in continuo apprendimento e una convinta sostenitrice dell'approccio multidisciplinare. Non è mai troppo tardi per imparare cose nuove.

Argomenti
Python

Scopri di più su Python con questi corsi!

Corso

Scrivere codice Python efficiente

4 ore
156.1K
Impara a scrivere codice efficiente che si esegua velocemente e usi le risorse in modo intelligente per evitare sprechi inutili.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

Mostra AltroMostra Altro