
Un soir de mars, je me suis retrouvée à fixer un script de 150 lignes sur l'écran de mon vieil ordinateur portable. Mes yeux piquaient un peu sous la lueur bleue, après huit heures passées au bureau, et le seul bruit dans ma cuisine de Clermont était le ronronnement régulier de mon vieux frigo. J'essayais simplement d'automatiser le suivi de mes petites dépenses, mais mon code ressemblait à un immense fouillis. J'ai réalisé, avec une pointe de honte, que j'avais recopié exactement le même calcul de TVA six fois de suite.
Avant d'aller plus loin, je préfère être honnête avec vous : ce carnet contient quelques liens affiliés. Si vous passez par eux pour un achat, je reçois une petite commission, mais cela ne change absolument rien au prix pour vous. Je ne parle ici que des outils que j'utilise vraiment sur ma table de cuisine, comme la Formation au langage Python qui m'a servie de boussole dès le départ.
Le piège du copier-coller (et la virgule de trop)
Au début, quand on apprend, on est tellement contente qu'un truc fonctionne qu'on ne se pose pas trop de questions sur l'élégance. On veut juste que ça marche. Alors, quand j'ai eu besoin de calculer une taxe sur une liste de courses, j'ai écrit mon petit calcul. Puis, j'en ai eu besoin pour mes factures d'électricité, alors j'ai fait un copier-coller. Puis pour l'abonnement internet... encore un copier-coller.
Le problème est arrivé quand j'ai voulu ajuster un détail dans le calcul. J'ai dû modifier les six blocs manuellement. C'est là que le drame a frappé : l'agacement de voir mon script planter parce que j'ai oublié une virgule dans le quatrième bloc de code que j'avais bêtement dupliqué. C'est un grand classique du débutant, je suppose. On se croit efficace parce qu'on va vite avec Ctrl+C / Ctrl+V, mais on finit par passer trois fois plus de temps à chercher une erreur de ponctuation cachée dans un doublon.

C'est comme si, en cuisine, je devais réécrire toute la recette de la pâte à tarte à chaque fois que je veux faire une quiche différente. C'est épuisant et on finit forcément par oublier le sel dans l'une d'elles. À ce stade de mon apprentissage, j'utilisais déjà Visual Studio Code pour écrire mon code, et voir toutes ces lignes rouges d'erreurs me narguait alors que je voulais juste aller me coucher.
Le déclic : taper 'def' pour la première fois
Après quelques semaines de pratique, j'ai décidé qu'il était temps d'ouvrir le chapitre sur les fonctions. J'avais un peu peur que ce soit trop mathématique, mais c'est en fait très simple. Tout commence par un mot-clé de seulement 3 caractères : def. C'est le signal qu'on donne à Python pour dire : "Attention, je vais définir une action que je vais réutiliser".
La règle d'or que j'ai apprise à mes dépens, c'est l'importance de l'alignement. En Python, l'indentation n'est pas là pour faire joli, elle est syntaxique. Le guide officiel de style, qu'on appelle la PEP 8, recommande d'utiliser 4 espaces pour décaler le contenu de sa fonction. Si on se trompe d'un seul espace, le programme s'arrête net avec une moue dédaigneuse. Pour moi qui suis parfois un peu brouillonne, ça a été une sacrée leçon de discipline.
En créant ma première fonction calculer_tva(), j'ai vu mon script fondre de moitié sous mes yeux. Au lieu de six blocs identiques, je n'en avais plus qu'un seul, bien rangé en haut de mon fichier. À chaque fois que j'en avais besoin, je n'avais qu'à l'appeler par son petit nom. C'était magique. C'est à ce moment-là que j'ai vraiment compris l'intérêt de la Formation au langage Python : elle ne m'apprenait pas juste des commandes, mais une manière de penser plus reposante pour le cerveau.

L'erreur de l'abstraction trop précoce
Au début de l'été, forte de ma nouvelle découverte, je suis tombée dans l'excès inverse. J'ai voulu transformer absolument tout en fonction. Même une simple addition de deux chiffres finissait dans une fonction complexe. C'est là que j'ai compris une vérité que les experts oublient souvent de dire aux débutants : ne transformez pas immédiatement chaque code répété en fonction.
L'abstraction prématurée crée souvent une complexité inutile. Un mardi soir après le travail, je me suis retrouvée avec des fonctions qui appelaient d'autres fonctions, qui elles-mêmes utilisaient des dictionnaires Python imbriqués. Résultat ? Quand un bug arrivait, je devais remonter une pelote de laine emmêlée pendant des heures. Parfois, il vaut mieux laisser deux petits blocs de code identiques si cela rend la lecture plus fluide, plutôt que de créer une "super-fonction" universelle que même vous, vous ne comprendrez plus dans trois jours.
C'est un équilibre délicat à trouver. On apprend à repérer le moment où le copier-coller devient dangereux, mais on apprend aussi à ne pas sur-organiser son code comme si on gérait la NASA alors qu'on veut juste trier ses factures de cantine.

Petites victoires et suite du voyage
Ce n'est pas encore du grand art, mais pour une autodidacte à sa table de cuisine, voir ce code propre et efficace est une petite victoire qui donne envie de continuer. J'ai encore des zones d'ombre, bien sûr. Par exemple, j'ai découvert qu'une fonction Python renvoie l'objet 'None' par défaut si on oublie l'instruction return. J'ai passé une soirée entière à me demander pourquoi mes calculs affichaient "None" au lieu de mes chiffres, avant de réaliser que ma fonction faisait le travail mais "gardait" le résultat pour elle au lieu de me le rendre.
Si vous débutez aussi, ne vous flagellez pas pour vos scripts un peu longs ou vos copier-coller massifs. C'est une étape normale. On finit par se lasser de corriger six fois la même erreur, et c'est là que l'apprentissage des fonctions devient une libération plutôt qu'une contrainte technique. Si vous voulez un cadre pour avancer sans vous éparpiller, je vous conseille vraiment de jeter un œil à la Formation au langage Python, c'est ce qui m'a permis de ne pas abandonner quand mes boucles commençaient à me donner le tournis. Plus tard, j'irai peut-être voir du côté de la formation JavaScript, mais pour l'instant, Python et moi, on commence à bien s'entendre.
Allez, je ferme l'ordinateur pour ce soir. Demain, j'essaierai de comprendre comment passer plusieurs arguments à mes fonctions sans tout casser. Ou peut-être que je me contenterai de faire une quiche, une vraie, sans code cette fois.