Les modules et l'import en Python

Un module est un fichier contenant du code Python réutilisable. Il permet d'organiser ton programme et d'utiliser des fonctions déjà écrites.

Qu'est-ce qu'un module et pourquoi en utiliser ?

Un module est un fichier avec l'extension .py. Il contient des fonctions, des variables et des classes. Python propose de nombreux modules standards, c'est-à-dire déjà installés avec Python. Utiliser un module évite de réécrire du code. Par exemple, le module math contient des fonctions mathématiques comme sqrt (racine carrée).
import math
print(math.sqrt(16))  # 4.0

La première ligne importe le module math. La deuxième ligne utilise la fonction sqrt du module math pour calculer la racine carrée de 16. Le résultat est 4.0 (un nombre flottant).

La syntaxe import / from ... import ... / as

Il existe trois façons principales d'importer un module. La première est import module. Elle permet d'utiliser les fonctions avec la notation module.fonction(). La deuxième est from module import fonction. Elle importe directement une fonction, que l'on utilise sans préfixe. La troisième est import module as alias. Elle donne un surnom au module pour raccourcir le code.
import math
print(math.sqrt(9))  # 3.0

from math import sqrt
print(sqrt(9))  # 3.0

import math as m
print(m.sqrt(9))  # 3.0

Le premier bloc importe tout le module math et utilise sqrt avec le préfixe math. Le deuxième bloc importe uniquement la fonction sqrt, donc on l'appelle directement. Le troisième bloc importe le module math avec l'alias m, donc on utilise m.sqrt.

Les modules standards utiles en SNT

Le module math fournit des fonctions mathématiques : sqrt, cos, sin, pi, etc. Le module random permet de générer des nombres aléatoires : random() donne un nombre entre 0 et 1, randint(a, b) donne un entier entre a et b. Le module datetime permet de manipuler les dates et heures. Le module csv permet de lire et écrire des fichiers CSV, souvent utilisés pour des données.
import math
print(math.pi)  # 3.141592653589793

import random
print(random.randint(1, 6))  # un entier entre 1 et 6 (exemple : 4)

from datetime import datetime
print(datetime.now())  # date et heure actuelles (exemple : 2025-03-23 14:30:00)

import csv
# (lecture d'un fichier CSV, voir exemple plus bas)

Le code importe math et affiche la valeur de pi. Ensuite, random.randint(1, 6) simule un dé à six faces. La fonction datetime.now() renvoie la date et l'heure actuelles. Le module csv est importé pour être utilisé dans la suite.

Exemple complet avec le module csv

Le module csv permet de lire un fichier CSV. Un fichier CSV contient des lignes avec des valeurs séparées par des virgules. On utilise csv.reader pour lire le fichier. Chaque ligne est une liste de chaînes de caractères.
import csv

with open('notes.csv', newline='', encoding='utf-8') as f:
    lecteur = csv.reader(f)
    for ligne in lecteur:
        print(ligne)

# Si notes.csv contient :
# nom,note
# Alice,15
# Bob,12
# Le programme affiche :
# ['nom', 'note']
# ['Alice', '15']
# ['Bob', '12']

La fonction open ouvre le fichier notes.csv en mode lecture. Le paramètre newline='' évite des problèmes de sauts de ligne. Le paramètre encoding='utf-8' gère les caractères accentués. csv.reader(f) crée un lecteur qui parcourt le fichier. La boucle for affiche chaque ligne sous forme de liste.

Créer et importer son propre module

Tu peux créer ton propre module. Il suffit de créer un fichier Python avec des fonctions. Par exemple, crée un fichier mon_module.py contenant une fonction saluer. Ensuite, dans un autre fichier, tu importes ce module avec import mon_module. Le fichier doit être dans le même dossier que ton programme.
# Fichier mon_module.py

def saluer(nom):
    return "Bonjour " + nom

# Fichier principal.py
import mon_module

print(mon_module.saluer("Alice"))  # Bonjour Alice

Le fichier mon_module.py définit la fonction saluer. Dans le fichier principal, on importe ce module. On appelle la fonction avec mon_module.saluer("Alice"). Le programme affiche Bonjour Alice.

Bonnes pratiques et erreurs fréquentes

Une erreur fréquente est ModuleNotFoundError. Elle se produit quand Python ne trouve pas le module. Vérifie que le module est installé ou que le fichier est dans le bon dossier. Une autre erreur est d'oublier le préfixe quand on utilise import module. Par exemple, écrire sqrt(4) sans avoir fait from math import sqrt provoque une erreur NameError. Il est recommandé de mettre tous les imports en haut du fichier. Utilise des noms de modules explicites et évite les alias trop courts.
import math
print(sqrt(4))  # NameError: name 'sqrt' is not defined

# Correction :
from math import sqrt
print(sqrt(4))  # 2.0

Le premier bloc provoque une erreur car sqrt n'est pas défini dans le programme. Le deuxième bloc importe sqrt directement, donc l'appel fonctionne.

🎯 À retenir

  • Un module est un fichier .py contenant du code réutilisable.
  • import module permet d'utiliser module.fonction().
  • from module import fonction permet d'utiliser fonction() directement.
  • import module as alias donne un surnom au module.
  • Les modules math, random, datetime et csv sont très utiles en SNT.
  • Pour créer ton module, crée un fichier .py et importe-le.
  • ModuleNotFoundError signifie que Python ne trouve pas le module.
  • Mets toujours les imports en haut de ton fichier.

✍️ Teste-toi

1. Quelle est la bonne syntaxe pour importer la fonction randint du module random ?

2. Que fait le code suivant ? import math ; print(math.floor(3.7))

3. Quelle erreur obtiens-tu si tu écris print(sqrt(9)) sans avoir importé sqrt ?

4. Pourquoi utiliser un module ?

Pixel