
Import math. Deux mots tapés sans trop y croire, entrée, et rien ne se passe — pas de traceback rouge, pas de message à décortiquer, juste le résultat attendu qui s'affiche, calme, comme si de rien n'était. Ce silence-là, personne ne me l'avait annoncé en commençant à apprendre Python en auto-formation : le moment où un module fait exactement ce qu'on attendait de lui, et où on reste une seconde immobile devant l'écran à se demander si on n'a pas triché, une question qui hante quiconque débute en programmation dès qu'il est question de modules Python.
Petite parenthèse avant d'aller plus loin : ce journal contient quelques liens affiliés, dont celui vers la Formation au langage Python que j'ai suivie au début. Si vous achetez via ce lien, je touche une petite commission, sans que le prix change pour vous. Voilà, c'est dit — on peut reparler de tricherie.
Le mythe qu'on ressert à qui apprend Python en solo
Le mythe, je l'ai lu et entendu une bonne dizaine de fois sur des forums de débutants : pour vraiment apprendre à coder, il faudrait tout écrire soi-même, sans jamais piocher dans ce que Python propose déjà. Comme si demander de l'aide à la bibliothèque standard revenait à copier sur sa voisine de classe pendant un contrôle. J'y ai cru assez longtemps pour m'infliger deux heures à essayer de recoder à la main une formule mathématique que Python savait déjà résoudre en une seule ligne, juste pour prouver — à qui, je ne sais toujours pas — que je méritais mon statut de débutante sérieuse.
C'est d'ailleurs dans les toutes premières leçons de la Formation au langage Python que j'avais croisé cette idée sans vraiment y croire sur le moment : on y suggérait d'aller chercher de l'aide ailleurs plutôt que de tout réinventer, et ça m'avait semblé presque malhonnête.

Qu'est-ce qui se passe vraiment quand on importe des modules Python ?
Techniquement, un import ne fait rien de magique : Python va chercher un fichier ou un bloc de code déjà écrit par quelqu'un d'autre et le rend disponible dans le mien, comme si j'avais recopié son contenu tout en haut de mon script sans jamais avoir eu à le regarder. La bibliothèque standard — celle qui arrive avec Python sans rien installer de plus — contient plus de 200 modules prêts à l'emploi. import math me donne accès à Pi avec ses 3.141592653589793 décimales sans que j'aie à les retenir, import random me sert un nombre au hasard pour un petit jeu, import datetime s'occupe des dates pendant que je m'occupe du reste.
C'est Gaultier, mon voisin de palier, qui m'a montré qu'on pouvait aussi ne récupérer qu'un seul morceau d'un module, avec quelque chose comme from math import sqrt, plutôt que d'importer tout le paquet pour une seule fonction. Il a répondu à ma question par deux autres questions, comme presque toujours avec lui, jusqu'à ce que je trouve la réponse toute seule — et c'est resté la meilleure leçon d'import que j'aie eue.
La documentation officielle, ouverte sans exemple, ne m'a menée nulle part
Avant de comprendre ça, j'avais essayé la méthode sérieuse : ouvrir la documentation officielle et la lire comme un mode d'emploi, dans l'ordre, en notant les mots que je ne connaissais pas. Ça n'a rien donné. Sans un exemple concret sous les yeux, sans un vrai problème à résoudre, les paragraphes glissaient les uns après les autres sans qu'aucun ne s'accroche. Elle m'expliquait la syntaxe d'un mot-clé dans le détail, mais jamais pourquoi mon message d'erreur ne ressemblait à rien de ce que je venais de lire, ni pourquoi une simple histoire d'indentation pouvait faire planter tout un bloc de code. J'ai fini par refermer l'onglet, convaincue pendant quelques jours que ce texte était écrit pour des gens qui savaient déjà coder, pas pour moi.

Trouver l'équilibre entre modules et logique maison
Le vrai danger, je l'ai quand même croisé de l'autre côté. À un moment, j'étais tellement contente de trouver une solution toute prête que j'arrêtais de me demander comment elle fonctionnait derrière le rideau. Se servir d'une fonction toute faite sans jamais avoir buté sur la logique en dessous, c'est un peu comme suivre un GPS pour aller au bout de sa propre rue : on arrive, mais on ne saurait plus refaire le chemin sans lui.
J'ai mis plusieurs soirées à comprendre comment une variable garde une valeur en mémoire, comment une boucle for tourne sans dérailler, comment un if/else choisit un chemin plutôt qu'un autre — et je suis contente de m'être embêtée avec ça avant de laisser un module le faire à ma place. Pareil pour une liste qui garde ses éléments dans l'ordre, un dictionnaire qui associe une clé à une valeur, ou une chaîne de caractères qu'on découpe et qu'on recolle : des briques que j'ai apprivoisées une par une. Le jour où j'ai compris qu'un bloc try/except pouvait rattraper une erreur au vol, ou que la fonction input() servait à faire parler mon programme avec moi, aucun module n'était encore entré en scène. Écrire mes propres petites fonctions, avant même d'aller lire comment apprendre à créer des fonctions python pour arrêter de copier-coller, ou simplement réussir à installer correctement mon environnement au tout début : tout ça est passé par la case essais ratés, sans raccourci.
Un détour par JavaScript : formation 100 % pratique m'a traversé l'esprit aussi, à un moment où je me demandais si je regardais dans la bonne direction. Ça ne m'a pas convaincue plus que ça : Python est resté mon terrain, sans que j'aie besoin d'en faire un match retour. Si vous voulez un panorama plus large de mon parcours, j'ai raconté ailleurs mon avis sincère sur une formation Python en ligne pour débutant.
Alors, importer un module Python, c'est tricher ?
Non. Un module, c'est un outil que quelqu'un d'autre a déjà affûté pendant des années ; refuser de s'en servir ne prouve rien, à part qu'on aime souffrir pour de mauvaises raisons. Gwilherm, un pair autodidacte croisé sur un forum, compare toujours le débogage à une panne mécanique : on cherche la pièce défaillante, on ne maudit pas le moteur. J'applique la même logique aux modules maintenant — je ne me demande plus si j'ai le droit de m'en servir, je me demande juste lequel résout mon problème le plus proprement.
La vraie question n'est donc jamais « ai-je le droit d'importer ? » mais « est-ce que je comprends ce que fait ce que j'importe ? ». Si la réponse est oui, le raccourci n'en est plus un : c'est simplement du bon sens, la même logique qui pousse à acheter la farine plutôt qu'à faire pousser le blé pour une tarte aux pommes du dimanche.
Si vous débutez aussi et que vous avez l'impression de tout faire à la dure, la Formation au langage Python reste ce qui m'a fait comprendre, au tout début, que je n'avais pas besoin d'être une génie des maths pour écrire des choses utiles avec mon clavier.
La prochaine étape, ce sera sans doute d'importer un module pour dompter mes fichiers Excel — mais ça, c'est une autre soirée, et une autre histoire de triche à moitié assumée.