F-string

La tecnica f-string sostituisce, da Python 3.6, la funzione format().
Risulta più flessibile e più efficiente.

Una stringa preceduta da f oppure F contiene delle coppie di parentesi graffe con all’interno delle espressioni.
Le espressioni saranno valutate a run-time per ottenere la stringa definitiva.


1

Il segnaposto {} riceve il valore specificato

titolo = "Shrek"
print(f"Ho visto {titolo} al cinema")

Ho visto Shrek al cinema

2

L’espressione nelle parentesi graffe può contenere strutture dati, funzioni, …

titolo = "Shrek"
cinema = ["Astra", "Odeon"]
print(f"Ho visto {titolo.upper()} al cinema {cinema[0]} e al cinema {cinema[1]}")

Ho visto SHREK al cinema Astra e al cinema Odeon


Il valore può essere seguito da : e dalle regole di formattazione.

:<10Allinea a sinistra, su 10 colonne
:>10… a destra …
:^10… al centro …
:*<10Allinea a sinistra, su 10 colonne, gli spazi riempiti con il carattere specificato
:*>10
:*^10
:10dFormato decimale, intero, su 10 colonne
:10.4e
:10.4E
… esponenziale, scientifico, su 10 colonne, 4 cifre dopo la virgola
E
:10.4f
:10.4F
… floating …, su 10 colonne, 4 cifre dopo la virgola
INF, NAN, SUP
:,...Il separatore della parte decimale è la virgola
:_...Il separatore delle migliaia è underscore
:+...Il segno positivo o negativo è sempre presente
:-...Il segno negativo è sempre presente (?)
: ...(spazio) Il segno positivo sostituito da uno spazio e il segno negativo sempre presente
:=10...Forza il segno + e a sinistra dello spazio disponibile

3

Allinea a sinistra (destra, centro) su 10 colonne, il carattere di riempimento è lo spazio

f"{titolo:<10}"
f"{titolo:>10}"
f"{titolo:^10}"

'Shrek.....'
'.....Shrek'
'..Shrek...'

Allinea a sinistra (destra, centro) su 10 colonne e utilizza il carattere di riempimento specificato

f"{titolo:*<10}"
f"{titolo:*>10}"
f"{titolo:*^10}"

'Shrek*****'
'*****Shrek'
'**Shrek***'

4

Formatta le percentuali: moltiplica per 100, arrotonda, aggiunge il segno di percentuale (0,1428… diventa 14.3%)

perdita =15
capitale=105  
print(f"Ho perso il {perdita/capitale:.1%} del capitale")

Ho perso il 14.3% del capitale