# F-string in Python

Con le f-string in Python è possibile inserire direttamente **espressioni e variabili complesse** in una stringa senza dover eseguire ulteriori conversioni o formattazioni.

## Che cosa sono esattamente le f-string in Python?

Le f-string sono un [formato di stringa in Python](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/formattazione-delle-stringhe-in-python/) introdotto con Python 3.6. Sono dette anche **stringhe letterali formattate**. All’interno delle f-string è possibile includere calcoli inserendoli fra parentesi graffe. Le f-string offrono una possibilità di scrittura più compatta rispetto ad altri metodi di formattazione delle stringhe come `str.format()` o la concatenazione con `+`. In questo modo si ottiene un codice più chiaro e preciso.

Le f-string sono estremamente flessibili e permettono di introdurre variabili ed espressioni in diversi tipi di dati come **integer, float, liste** o addirittura espressioni e funzioni senza eseguire prima conversioni o formattazioni speciali. Di norma le f-string in Python sono più veloci rispetto ad altri metodi di formattazione delle stringhe in Python.

## La sintassi generale delle f-string

La struttura fondamentale di una f-string è composta dal **prefisso** `f` o `F`, seguito da una stringa indicata fra virgolette (“ oppure ’). All’interno di questa stringa è possibile utilizzare le parentesi graffe `{}` per incorporare variabili o espressioni.

```python
name = "Peter"
age = 25
formatted_string = f"My name is {name} and I am {age} years old."
print(formatted_string) # Output: My name is Peter and I am 25 years old.
```

Nel nostro esempio sostituiamo la variabile `name` con `{name}` e la variabile `age` con `{age}` nella f-string per creare la sequenza di caratteri finale.

## Possibilità di applicazione delle f-string in Python

È possibile utilizzare e specificare le f-string in molti modi diversi.

### Esecuzione di calcoli all’interno di una stringa

Le f-string in Python sono particolarmente utili per eseguire **operazioni aritmetiche** all’interno di una stringa. Ad esempio, ti permettono di definire un’espressione complessa in un’unica riga.

```python
num1 = 10
num2 = 5
result = f"The sum of {num1} and {num2} is {num1 + num2}"
print(result) # Output: The sum of 10 and 5 is 15
```

Qui viene eseguita l’addizione di `num1` e `num2` all’interno della f-string e il risultato viene inserito direttamente nella stringa finale.

### Le f-string in Python e le raw string

La combinazione di `r` (che sta per “raw string”) ed `f` (per stringhe formattate o f-string) crea uno speciale tipo di stringa in Python, nota come rf-string. La rf-string unisce le funzionalità delle raw string, che **interpretano le sequenze di escape in modo letterale**, alla flessibilità e all’efficienza delle f-string, che consentono l’incorporazione diretta di variabili ed espressioni in una stringa.

```python
name = "User"
path = rf'C:\Users\Username\Documents\{name}\file.txt'
print(path) # Output: C:\Users\Username\Documents\User\file.txt
```

In questo codice utilizziamo la rf-string per definire un percorso. L’utilizzo di `{name}` all’interno della rf-string porta all’inserimento diretto della variabile `name`, mentre la `r` davanti alla stringa fa in modo che il **backslash** `\` venga gestito come carattere letterale e non come parte di una sequenza di escape.

### Precisione di numeri a virgola mobile

Con particolari **istruzioni di formattazione** puoi definire la quantità di cifre decimali in un numero a virgola mobile all’interno di una stringa formattata.

```python
value = 3.14159265359
formatted_value = f"Rounded value = {value:.3f}"
print(formatted_value) # Output: Rounded value = 3.142
```

Qui l’istruzione di formattazione `:.3f` indica che la variabile `value` deve essere arrotondata alla terza cifra decimale e inserita nella stringa formattata.

### Larghezza e allineamento

Le funzioni per larghezza e allineamento delle f-string di Python permettono di controllare l’**aspetto dei valori inseriti** all’interno di un campo definito. Queste funzioni sono utili per posizionare testo o numeri in una data area e allinearli a destra, a sinistra o al centro.

Prendiamo ad esempio il nome `__Alice__` e immaginiamo di volerlo posizionare in un campo della larghezza di dieci caratteri allineandolo a destra:

```python
name = "Alice"
formatted_name = f"Hello, {name:>10}"
print(formatted_name) # Output: Hello,      Alice
```

Poiché il valore ha una lunghezza inferiore a dieci caratteri, viene allineato a destra per mezzo della specifica `{name:>10}`.

### Completamento con zeri o altri caratteri

Il completamento con zeri o altri caratteri ha effetto sull’allineamento dei numeri in un campo. Questa funzionalità è utile se devi raffigurare dei numeri in un formato fisso, ad esempio per la **visualizzazione di tempi e valori numerici**.

```python
number = 42
formatted_number = f"Number: {number:06}"
print(formatted_number) # Output: Number: 000042
```

In questo caso, `:06` indica che il numero `number` viene inserito in un campo composto da sei caratteri. Le posizioni mancanti vengono invece completate con l’aggiunta di zeri iniziali.

È possibile specificare anche caratteri diversi dallo zero da usare per il completamento:

```python
word = "Python"
formatted_word = f"Word: {word:_<10}"
print(formatted_word) # Output: Word: Python____
```


This is a markdown version of: [https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/f-string-in-python/](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/f-string-in-python/) for AI/LLM consumption.