Le format que tu utiliseras vraiment
Les f-strings sont la façon par défaut dont le code Python moderne intègre des valeurs dans du texte. Mets un f devant le guillemet d'ouverture, et tout ce qui se trouve dans {...} devient une expression vivante :
Trois choses à remarquer. Le préfixe f transforme tout le littéral en template. Les accolades sont les points de substitution. Et l'expression à l'intérieur des accolades est évaluée au moment où print s'exécute, pas au moment où la chaîne a été écrite.
Tu écriras des f-strings bien plus souvent que n'importe quel autre style de formatage. Elles sont plus courtes que "Hello, " + name + ".", plus claires que "Hello, %s." % name, et plus flexibles que .format().
Tout ce qui s'évalue peut aller à l'intérieur
Les accolades ne sont pas limitées aux noms de variables. Toute expression Python est de bon jeu :
Appels de méthode, indexation, arithmétique, expressions conditionnelles — tout va bien. La seule règle : garde ce qui est entre les accolades court. Si tu écris un calcul de trois lignes à l'intérieur d'un espace réservé, calcule-le d'abord dans une variable nommée et laisse tomber le nom à la place.
Formater des nombres
Un deux-points après l'expression ouvre une spec de format — un mini-langage pour contrôler comment la valeur est affichée :
Un guide rapide de ce que fait chaque morceau :
.2f— flottant, deux chiffres après la virgule. Arrondit à l'affichage.,— virgule comme séparateur de milliers. Marche pour int et float..1%— multiplie par 100 et ajoute%. Parfait pour les ratios et les taux..2e— notation scientifique avec deux chiffres décimaux.
Tu peux les combiner. f"{total:,.2f}" donne "1,234.57".
Remplissage, largeur et alignement
Pour aligner des colonnes de sortie :
<10 veut dire « aligné à gauche, rembourré à au moins 10 caractères ». >5 veut dire « aligné à droite, rembourré à 5 ». Tu peux aussi utiliser ^ pour centré.
Rembourre avec autre chose que des espaces en mettant le caractère de remplissage avant le drapeau d'alignement :
Formater des dates
La même syntaxe {value:spec} marche pour les objets datetime :
La spec après le deux-points est une chaîne de format strftime. Tout code % disponible pour strftime fonctionne ici — on couvrira ceux-ci en détail sur la page datetime.
L'astuce = pour le débogage
L'une des fonctionnalités de niche les plus utiles : mets = après l'expression et Python affiche à la fois la source de l'expression et sa valeur :
Tu obtiens count=7, price=19.99, count * price=139.93. C'est un print("count =", count) complet en trois caractères. Ça vaut le coup de s'en souvenir la prochaine fois que tu débogues et veux dumper quelques valeurs.
Échapper les accolades
Si tu as besoin d'une accolade { ou } littérale dans la sortie, double-les :
Les accolades simples ouvrent une expression ; {{ et }} représentent { et } dans la sortie.
f-strings multilignes
Les f-strings s'entendent bien avec les triples guillemets, ce qui aide quand tu construis de petits templates en ligne :
Tu peux aussi couper une longue f-string à travers plusieurs littéraux de chaînes adjacents — Python les concatène automatiquement :
Quand les anciens styles apparaissent encore
Tu croiseras deux anciens styles de formatage dans du code existant :
Les trois produisent la même sortie. Les f-strings gagnent sur la lisibilité dans neuf cas sur dix. Utilise .format() quand tu as besoin de construire un template une fois et de l'appliquer plusieurs fois ; utilise % seulement quand tu maintiens du vieux code qui l'utilise déjà.
Ce pour quoi elles ne sont pas bonnes
Deux situations appellent un outil différent.
Construire des requêtes SQL. N'interpole jamais une entrée utilisateur dans une chaîne SQL avec une f-string. Utilise les requêtes paramétrées de ta bibliothèque de base de données. Une f-string là, c'est comme ça que l'injection SQL arrive.
Construire du texte d'UI traduit. Si ton application prend en charge plusieurs langues, tu veux un template que des outils de traduction externes peuvent capturer — généralement le _(...) de gettext ou un helper spécifique au framework. Une f-string intègre la structure dans le code source, ce qui rend la traduction bien plus difficile.
Pour tout le reste — logs, sortie console, construction d'URL, construction de chaînes de config, formatage de nombres pour l'affichage — les f-strings sont la bonne réponse.
Ensuite : nombres et booléens
Les f-strings font beaucoup de kilomètres en formatant des nombres, donc il vaut le coup de connaître les types numériques un peu plus en profondeur. C'est la suite.
Questions fréquentes
Qu'est-ce qu'une f-string en Python ?
Une f-string est un littéral de chaîne préfixé par f, où tout ce qui se trouve à l'intérieur de {...} est remplacé à l'exécution par la valeur de l'expression. f"Hello, {name}" insère la valeur actuelle de name dans la chaîne.
Quand les f-strings ont-elles été ajoutées à Python ?
Python 3.6. Chaque version moderne de Python les prend en charge, donc tu peux utiliser des f-strings partout où tu écris du Python 3 aujourd'hui. Les anciens styles de formatage (% et .format()) fonctionnent encore mais se lisent moins bien dans la plupart des cas.
Comment formater un nombre à 2 décimales en Python ?
Utilise une spec de format après un deux-points à l'intérieur des accolades : f"{price:.2f}". Le .2f veut dire « flottant avec deux chiffres après la virgule ». Ça arrondit la valeur affichée ; le nombre d'origine n'est pas changé.
Puis-je mettre n'importe quelle expression dans une f-string ?
Oui — arithmétique, appels de méthode, appels de fonction, expressions conditionnelles. f"{name.upper()}" et f"{price * 1.2:.2f}" fonctionnent tous les deux. Garde les expressions courtes ; si le code entre les accolades devient tordu, calcule-le d'abord dans une variable.