Python format()

La funzione format() è simile al metodo format Stringa. Internamente, entrambi i metodi chiamano il metodo __format__() di un oggetto.

Mentre la funzione built-in format() è un'implementazione di basso livello per la formattazione di un oggetto usando internamente __format__(), la stringa format() è un'implementazione di livello superiore in grado di eseguire complesse operazioni di formattazione anche su stringhe di oggetti multipli.

format() restituisce una rappresentazione formattata del dato valore controllato dallo specificatore di formato.

La sintassi di format() è:

format(valore[, format_spec])

La funzione format() prende due parametri:

  • Il valore che deve essere formattato.
  • format_spec, la specifica su come il valore deve essere formattato.

Lo specificatore di formato potrebbe essere nel formato:

[[fill]align][sign][#][0][width][,][.precision][type]

dove le opzioni sono:

  • riempire(fill) ::= qualsiasi carattere
  • allineare(align) ::= "<" | ">" | "=" | "| "^"
  • segno(sign) ::= "+" | "-" | " " "
  • larghezza(width) ::= intero
  • precisione(precision) ::= intero
  • tipo(type) ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "X" | "%".
# integer
print(format(123, "d"))

# float
print(format(123.4567898, "f"))

# binary
print(format(12, "b"))

Output del codice

123
123.456790
1100

Formattazione dei numeri con riempimento, allineamento, segno, larghezza, precisione e tipo.

# integer
print(format(1234, "*>+7,d"))

# float
print(format(123.4567, "^-09.3f"))

Output del codice

*+1,234
0123.4570

Cerchiamo di capire ogni opzione:

  • * - È il carattere di riempimento che riempie gli spazi vuoti dopo la formattazione.
  • > - E' la giusta opzione di allineamento che allinea la stringa di uscita a destra.
  • + - È l'opzione del segno che obbliga il numero ad essere ad avere un segno alla sua sinistra.
  • 7 - E' l'opzione della larghezza che obbliga il numero a prendere una larghezza minima di 7, gli altri spazi saranno riempiti dal carattere di riempimento.
  • , - È l'operatore delle migliaia, che separa le cifre.
  • d - È l'opzione del tipo che specifica che il numero è un numero intero.

Durante la formattazione del numero a virgola mobile 123.4567, abbiamo specificato lo specificatore di formato ^-09.3f. Questi sono:

  • ^ - E' l'opzione di allineamento al centro che allinea la stringa di uscita al centro dello spazio rimanente.
  • - E' l'opzione del segno che costringe solo numeri negativi a mostrare il segno.
  • 0 - È il carattere che viene posto al posto degli spazi vuoti.
  • 9 - È l'opzione della larghezza che imposta la larghezza minima del numero a 9 (compreso il punto decimale, le cifre dopo la virgola ed il segno).
  • .3 - È l'operatore di precisione che imposta la precisione del numero decimale a 3 cifre.
  • f - È l'opzione di tipo che specifica che il numero è float.