Mon Labo Python

Comment utiliser les f-strings en python pour ne plus s'embrouiller

C’était un mardi soir pluvieux en février, le genre de soirée où l’on a plus envie de s'enrouler dans un plaid que de fixer un écran. J'étais assise à ma table de cuisine à Clermont-Ferrand, avec une tasse de thé qui refroidissait doucement à côté de mon clavier. Je me battais avec un script tout bête, censé simplement afficher une phrase avec mon nom et mon âge. Mais rien ne marchait. Mon écran me renvoyait des erreurs rouges, encore et encore, et je ne comprenais pas pourquoi mon code ressemblait à une forêt de guillemets et de signes plus totalement illisible.

Le bruit sourd du ventilateur de mon vieux PC qui s'emballe alors que je relance mon script pour la dixième fois n'aidait pas à calmer mes nerfs. J'essayais d'écrire une ligne de code avec ce qu'on appelle la concaténation. C'est le mot savant pour dire qu'on colle des morceaux de texte avec des variables. Ça donnait un truc du genre : print("Bonjour, je m'appelle " + nom + " et j'ai " + str(age) + " ans."). C'était un cauchemar. J'oubliais toujours un espace entre le mot et le guillemet, ou alors je fermais mal une parenthèse.

La galère des débuts : quand les guillemets nous rendent chèvre

Après un mois de pratique laborieuse, j'en étais toujours au même point. Chaque fois que je voulais intégrer un chiffre dans une phrase, je me prenais un mur. Cette frustration de voir un 'TypeError' s'afficher juste parce que j'ai oublié de convertir un âge en texte avec str() est devenue une compagne familière de mes soirées. C'est un peu comme si on essayait de mélanger de l'huile et de l'eau : en Python, on ne peut pas coller un nombre directement à du texte sans faire de la gymnastique mentale.

Je passais mon temps à compter les guillemets. Est-ce que j'en ai mis deux ici ? Est-ce que ce signe '+' est au bon endroit ? Le code ne ressemblait plus à du français, ni même à une instruction logique. C'était devenu un puzzle visuel épuisant. J'en étais arrivée à un point où je redoutais d'écrire un simple message de bienvenue. C'est à ce moment-là que j'ai réalisé que si coder devait être aussi pénible pour chaque phrase, je n'allais pas tenir longtemps après mes journées de travail au bureau.

La découverte du petit 'f' magique

Et puis, un soir, en fouillant sur un forum, je suis tombée sur un exemple de code qui semblait venir d'une autre planète. Il n'y avait presque plus de signes '+'. À la place, il y avait un petit 'f' juste avant le premier guillemet. J'ai appris plus tard que ces fameuses f-strings (ou chaînes de caractères formatées) ont été introduites avec la version 3.6 du langage Python. Elles ont même leur propre acte de naissance officiel, le PEP 498. Pour moi, ce n'était pas de la théorie, c'était une bouée de sauvetage.

Le principe est d'une simplicité désarmante. On écrit sa phrase normalement, et là où on veut mettre une variable, on ouvre des accolades {}. C'est comme laisser un emplacement vide sur une étiquette pour écrire le prix plus tard. On n'a plus besoin de se soucier de transformer les nombres en texte avec str(). Python s'en occupe tout seul. Voici à quoi ressemblait mon nouveau code : print(f"Bonjour, je m'appelle {nom} et j'ai {age} ans."). C'était lisible. C'était clair. C'était presque trop facile, comme si je trichais un peu.

J'ai aussi découvert qu'on peut écrire ce préfixe en minuscule ou en majuscule ('F'), même si tout le monde semble préférer le minuscule. Pour une débutante comme moi, c'était le premier vrai moment de satisfaction. Je n'avais plus l'impression de parler à une machine capricieuse, mais de donner une instruction simple. Si vous débutez aussi, c'est le genre de petit truc qui change la donne, tout comme quand on commence à utiliser les conditions if else en python pour que nos programmes prennent enfin des décisions.

Le déclic : quand le code devient une phrase

Pendant les premières chaleurs de juin, j'ai commencé à vraiment m'amuser avec. Le déclic s'est produit quand j'ai compris que les f-strings ne servaient pas qu'à afficher des noms. On peut carrément faire des calculs à l'intérieur des accolades ! Si je veux afficher le prix TTC d'un article, je peux écrire f"Le total est de {prix * 1.2} euros". Plus besoin de créer une variable intermédiaire juste pour un petit calcul de TVA.

C'est devenu ma méthode préférée. C'est un soulagement mental immense. Quand je rentre du boulot et que j'ai le cerveau en compote, ne plus avoir à traquer les erreurs de type 'TypeError' est une petite victoire. Les f-strings sont d'ailleurs réputées pour être plus rapides à l'exécution que les anciennes méthodes comme .format() ou l'opérateur %. Bon, à mon niveau, la vitesse de mon script ne change pas ma vie, mais savoir que j'utilise la méthode "moderne" me donne un petit coup de boost au moral.

J'ai même découvert récemment que la version 3.12 de Python, sortie il y a peu, a encore amélioré le système. On peut désormais mettre des expressions sur plusieurs lignes ou utiliser des guillemets imbriqués plus facilement à l'intérieur des accolades. C'est un peu technique pour moi encore, mais ça montre que c'est un outil qui évolue. C'est rassurant de voir que même les créateurs du langage cherchent à nous simplifier la vie.

Pourquoi il ne faut pas non plus en mettre partout

Cependant, la semaine dernière, j'ai eu une petite déconvenue. À force de vouloir tout mettre dans des f-strings, mon code est redevenu illisible. J'ai essayé d'insérer des calculs complexes et des appels de fonctions à rallonge entre les accolades. Résultat : une ligne de 200 caractères que je n'arrivais même plus à comprendre le lendemain matin. Mon erreur a été de croire que les f-strings étaient la solution à tout.

J'ai appris à mes dépens qu'utiliser les f-strings pour tout formater est une erreur : elles nuisent à la lisibilité et même à la sécurité dès que l'on manipule des données utilisateur complexes ou qu'on essaie d'en faire trop en une seule ligne. Parfois, il vaut mieux calculer son résultat sur une ligne séparée, puis l'afficher proprement. C'est une question d'équilibre, un peu comme quand on cuisine : ce n'est pas parce qu'on a une super épice qu'il faut en mettre dans le dessert et dans l'entrée.

Aujourd'hui, je les utilise avec parcimonie mais reconnaissance. Elles m'ont permis de franchir un cap où je ne me sens plus bloquée par la forme de mon texte. C'est un peu comme quand j'ai appris à utiliser try except en python pour éviter les bugs : on se sent plus en contrôle de ce qui se passe à l'écran. On arrête de subir la syntaxe pour commencer à construire quelque chose.

Mes petits conseils de débutante à table

Si vous êtes comme moi, en train de ramer sur votre table de cuisine après une longue journée, voici ce que j'aurais aimé qu'on me dise plus tôt. N'ayez pas peur de ce petit 'f'. Il n'est pas là pour compliquer les choses, mais pour vous simplifier la vie. C'est sans doute l'un des meilleurs investissements de temps que j'ai fait dans ma formation python pour progresser tranquillement chez moi.

N'oubliez pas que les accolades sont vos amies. Si vous avez un doute, testez une petite ligne dans votre éditeur. Si ça devient trop long, coupez en deux. Python est assez flexible pour vous pardonner beaucoup de choses, tant que vous gardez ce petit 'f' au début du texte. Et si jamais vous vous sentez perdue, rappelez-vous que même les gens qui codent depuis des années font des erreurs stupides de guillemets. La seule différence, c'est qu'ils ont appris à utiliser les bons outils pour les éviter.

Ce soir, alors que je ferme mon ordinateur, je repense à ce mardi de février. Le chemin est encore long, et il y a des tonnes de choses que je ne maîtrise pas encore, comme la manipulation avancée des listes ou les bases de données. Mais au moins, mes phrases s'affichent correctement. Et dans le petit monde de l'apprentissage en solo, chaque phrase qui s'affiche sans erreur est une victoire qui mérite bien une deuxième tasse de thé.

Articles connexes