Vous écrivez des f-strings simples depuis le chapitre sur les chaînes : f"{prenom} a {age} ans". Ce chapitre va plus loin — chiffres formatés, tableaux alignés, dates… Les f-strings (formatted string literals), introduites en Python 3.6, sont la méthode moderne pour combiner texte et variables. Le TOSA les teste massivement dès le niveau Opérationnel.
Les trois façons de formater une chaîne
Il y a historiquement plusieurs façons de mélanger texte et variables en Python. Les f-strings sont aujourd'hui le standard — les autres sont à reconnaître (le TOSA peut les présenter) mais pas à utiliser dans du nouveau code.
Concaténation avec + (à éviter)
nom = "Alice"
age = 30
message = "Bonjour " + nom + ", vous avez " + str(age) + " ans."
print(message)Problèmes :
- Verbeux et difficile à lire.
- Nécessite des
str(...)pour convertir les nombres. - Mauvais pour les performances sur des chaînes longues.
Avec l'opérateur % (ancien style)
nom = "Alice"
age = 30
message = "Bonjour %s, vous avez %d ans." % (nom, age)
print(message)Hérité du C. Fonctionne mais obsolète en Python moderne.
Avec la méthode .format() (Python 2.6+)
nom = "Alice"
age = 30
message = "Bonjour {}, vous avez {} ans.".format(nom, age)
print(message)Mieux, mais toujours verbeux. Remplacé par les f-strings en Python 3.6+.
Avec les f-strings (Python 3.6+, RECOMMANDÉ)
nom = "Alice"
age = 30
message = f"Bonjour {nom}, vous avez {age} ans."
print(message)Avantages :
- Syntaxe lisible : les variables sont à leur place dans la chaîne.
- Pas besoin de
str(...): la conversion est automatique. - Performances optimales (les f-strings sont compilées).
Le f devant la chaîne la transforme en f-string ; Python évalue ensuite tout ce qui est entre {}.
Ce qu'on peut mettre dans les accolades
À l'intérieur des {...}, on peut placer toute expression Python valide.
Une simple variable
nom = "Alice"
print(f"Bonjour {nom} !")Une expression
a, b = 3, 5
print(f"{a} + {b} = {a + b}")
print(f"{a}² = {a ** 2}")Un appel de fonction ou de méthode
nom = "alice"
print(f"Nom : {nom.upper()}")
print(f"Longueur : {len(nom)}")
import math
print(f"Racine de 2 : {math.sqrt(2)}")Un accès à une liste ou un dictionnaire
fruits = ["pomme", "banane", "cerise"]
print(f"Premier fruit : {fruits[0]}")
personne = {"nom": "Alice", "age": 30}
print(f"Nom : {personne['nom']}, Âge : {personne['age']}")