# Formattatore Python

URL: https://discuvr.org/python-formatter/?hl=it
Last updated: 2026-11-07
MCP tool: `format_python`

Incolla Python e Black lo formatta con la tua lunghezza di riga. Gli errori di sintassi indicano la riga esatta. Il codice non viene mai eseguito né salvato.

Questo esegue Black, il formattatore su cui la maggior parte dei progetti Python è già d'accordo, su ciò che incolli, con la lunghezza di riga e la gestione delle virgolette che scegli. Se il file non si analizza, dice a quale riga, e se è già formattato lo dice comunque, invece di fingere di aver fatto qualcosa.

## Cosa fa

- Formattazione Black a 79, 88, 100 o 120 colonne.
- Modalità "solo verifica": scopri se un file cambierebbe senza modificarlo.
- Mantieni il tuo stile di virgolette, oppure lascia che Black lo normalizzi.
- Rispetta o ignora la virgola finale magica che mantiene una collezione espansa.
- Punta a una versione specifica di Python quando la sintassi è sensibile alla versione.
- Gli errori di sintassi riportano la riga, la colonna e il codice circostante.
- Riporta quante righe sono state aggiunte e rimosse, oltre alla forma del file.

## Come funziona

1. Incolla il codice, o un intero file.
2. Scegli una lunghezza di riga e le opzioni che ti interessano.
3. Premi Formatta, poi copia o scarica il risultato.

## Il tuo codice non viene mai eseguito

Formattare Python non richiede di eseguirlo. Il codice viene analizzato in un albero sintattico e riscritto a partire da quell'albero, interamente in memoria - non viene mai scritto in un file, mai importato e mai eseguito. Un formattatore che eseguisse ciò che hai incollato sarebbe una shell remota con una casella di testo.

## Perché Black, e non un'opinione nostra

Black è una trasformazione che preserva l'AST: il codice che esce è lo stesso programma di quello che entra. Questa proprietà è l'intero motivo per cui ci si può fidare di un formattatore, ed è il motivo per cui nessun modello linguistico è coinvolto in alcuna parte di questo strumento. Un modello a cui viene chiesto di riordinare il codice occasionalmente riscriverà una riga mentre lo fa, e una modifica silenziosa a un codice funzionante è l'unico fallimento che un formattatore non può permettersi.

## Solo verifica

La stessa domanda che pone la CI: questo file cambierebbe? La modalità di verifica restituisce il tuo codice originale intatto e riporta se Black lo avrebbe riformattato, e di quante righe. È il modo rapido per scoprire perché una pipeline fallisce su un file che non puoi riprodurre localmente.

## Virgola finale magica e fmt: off, esempi pratici

Una virgola dopo l'ultimo elemento dice a Black di tenere una chiamata o una collezione con un elemento per riga: result = compute(alpha, beta,) torna su quattro righe, con alpha, e beta, ciascuno sulla propria riga. Spunta Ignora la virgola finale magica e lo stesso input diventa result = compute(alpha, beta) quando sta nella lunghezza di riga. Per proteggere un blocco allineato a mano, come una matrice, metti # fmt: off nella riga sopra e # fmt: on sotto, e Black lascia tutto ciò che sta in mezzo come l'hai scritto; # fmt: skip a fine riga protegge solo quella riga. Sono commenti di Black stesso, quindi continuano a funzionare quando la CI del tuo progetto esegue Black.

## Domande

**Il mio codice viene caricato o memorizzato?**

Viene inviato al server, formattato in memoria e restituito nella stessa risposta. Niente viene scritto su disco, memorizzato nella cache o registrato, e il registro di utilizzo conserva solo conteggi - dimensione, opzioni, quante righe sono cambiate - mai il codice.

**La formattazione cambia cosa fa il mio codice?**

No. Black cambia l'impaginazione, non il comportamento, ma fa più che spostare spazi. Toglie le parentesi superflue (x = (1) diventa x = 1), mette in minuscolo prefissi ed esponenti dei numeri (0XABCDEF diventa 0xABCDEF, 1E5 diventa 1e5), aggiunge una virgola finale quando divide una chiamata su più righe, riduce le serie di righe vuote e toglie gli spazi dentro una docstring (""" Doc. """ diventa """Doc."""). Quest'ultima modifica cambia il testo di __doc__, il che conta solo se il tuo codice legge le proprie docstring.

**Perché non ha riformattato affatto il mio file?**

Perché era già formattato alla lunghezza di riga che hai scelto. Lo strumento dice "già formattato" invece di restituire silenziosamente una copia.

**Ordina i miei import?**

No. Ordinare gli import è compito di isort, non di Black, e i due sono in disaccordo abbastanza spesso che farlo qui ti sorprenderebbe.

**Può formattare un file con un errore di sintassi?**

Nessun formattatore può - un file non analizzabile non ha una struttura da riscrivere. Ottieni la riga, la colonna e il codice circostante per poterlo correggere e riprovare.

**Segue PEP 8?**

Black è compatibile con PEP 8 con una deviazione nota: la sua lunghezza di riga predefinita è 88 invece di 79. Scegli 79 nel selettore della lunghezza di riga se hai bisogno della cifra più rigorosa.

**Quanto può essere grande il file?**

Fino a 400.000 caratteri per esecuzione. La formattazione si interrompe dopo 10 secondi, cosa che capita solo a file molto grandi o molto ripetitivi, e ogni indirizzo IP può eseguire 30 formattazioni ogni 10 minuti.

**Come ottengo la stessa formattazione nel mio editor, con pre-commit o in CI?**

Questa pagina usa Black, e la sua versione compare nell'intestazione della pagina sugli schermi larghi. Black legge le impostazioni del progetto da pyproject.toml, nella sezione [tool.black], con i nomi lunghi delle opzioni: line-length = 88 per l'opzione "Lunghezza riga" scelta, skip-string-normalization = true se hai spuntato "Mantieni le mie virgolette", skip-magic-trailing-comma = true per "Ignora la virgola finale magica" e target-version = ["py311"] per un valore fisso in "Destinazione". I plugin dell'editor e l'hook di pre-commit leggono lo stesso file. Esegui black . per formattare e black --check --diff . in CI: non modifica nulla ed esce con codice 1 quando un file verrebbe riformattato. Blocca la stessa versione di Black di questa pagina, perché la prima release di ogni anno solare può cambiare lo stile stabile.

**Il risultato è uguale a quello del formattatore di Ruff (ruff format)?**

Quasi sempre, ma non byte per byte. Il formattatore di Ruff è pensato come sostituto diretto di Black, e la documentazione di Ruff riporta che su grandi progetti già formattati con Black, come Django e Zulip, oltre il 99,9% delle righe esce identico. Si discosta di più su codice mai passato da Black, soprattutto nei commenti a fine riga, e la sua documentazione elenca le differenze volute. Anche la sua lunghezza di riga predefinita è 88, impostabile con line-length in [tool.ruff]; quote-style = "preserve" in [tool.ruff.format] corrisponde a "Mantieni le mie virgolette" e skip-magic-trailing-comma = true corrisponde a "Ignora la virgola finale magica". Se la tua CI esegue ruff format --check, prova il file con Ruff, non con questa pagina.

## Altro in Strumenti per sviluppatori

- [Visualizzatore HTML](https://discuvr.org/html-viewer/?hl=it)
- [Calcolatore di Sottorete IP](https://discuvr.org/ip-subnet-calculator/?hl=it)
- [Codifica / Decodifica](https://discuvr.org/encode-decode/?hl=it)
- [Convertitore di timestamp Unix](https://discuvr.org/timestamp-converter/?hl=it)

## Spesso usato con

- [Confronto testi](https://discuvr.org/text-diff/?hl=it)
- [Convertitore di maiuscole e strumenti per righe](https://discuvr.org/case-converter/?hl=it)
- [Study Buddy](https://discuvr.org/study-buddy/?hl=it)

---

Part of Discuvr (https://discuvr.org/): Discuvr is a collection of free, focused tools for day-to-day professional work - office and data utilities, legal and compliance helpers, privacy and security checks, and developer formatters. Every tool has its own page, and most can also be called from ChatGPT or Claude over MCP.
