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.
:<10 | Allinea a sinistra, su 10 colonne |
:>10 | … a destra … |
:^10 | … al centro … |
:*<10 | Allinea a sinistra, su 10 colonne, gli spazi riempiti con il carattere specificato |
:*>10 | … |
:*^10 | … |
:10d | Formato decimale, intero, su 10 colonne |
:10.4e:10.4E | … esponenziale, scientifico, su 10 colonne, 4 cifre dopo la virgolaE |
:10.4f:10.4F | … floating …, su 10 colonne, 4 cifre dopo la virgolaINF, 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