Modules Python
Un module est un fichier Python (.py) qui contient du code réutilisable : des fonctions, des classes, des variables. Les modules permettent d'organiser le code et d'éviter la répétition.
Python propose des centaines de modules intégrés (comme random, math, os...), permet d'en télécharger des milliers d'autres, et vous pouvez aussi créer vos propres modules.
1. Qu'est-ce qui se cache derrière import
Exemple de départ
Ce programme affiche un nombre aléatoire entre 1 et 6 (comme un dé).
Explication de l'import
Quand vous écrivez import random, Python :
- Cherche un fichier nommé
random.pydans ses bibliothèques standard - Exécute tout le code de ce fichier (définitions de fonctions, de variables, etc.)
- Crée un objet
randomqui contient tout ce qui a été défini dans le fichier
Ensuite, vous pouvez accéder aux fonctions du module avec la notation pointée : random.randint(), random.choice(), etc.
Autres modules courants
Variantes de l'import
Import avec alias
c'est une fonctionnalité qui sert à renommer un module pour que le code soit plus léger.
Import d'une fonction spécifique
Lorsqu'on a besoin que d'une seule fonction.
Attention
Avec from random import randint, vous ne pouvez utiliser que randint. Pour utiliser d'autres fonctions du module, il faudrait les importer aussi.
Import de tout (MAUVAISE PRATIQUE - NE PAS FAIRE)
J'ajoute uniquement ce paragraphe pour que vous ne fassiez pas ça.
Mauvaise pratique
from module import * importe tout et peut créer des conflits de noms. La dernière version importée écrase les précédentes.
Exemple concret du problème :
from math import *
from numpy import *
# La fonction exp de numpy a écrasé celle de math
print(exp(1)) # Fonctionne : 2.718...
print(exp(1 + 2j)) # Fonctionne : numpy accepte les complexes
Maintenant, inversons l'ordre :
from numpy import *
from math import *
# La fonction exp de math a écrasé celle de numpy
print(exp(1)) # Fonctionne : 2.718...
print(exp(1 + 2j)) # ❌ ERREUR : math n'accepte pas les complexes
Le même code produit des résultats différents selon l'ordre des imports ! C'est pourquoi il faut éviter import *.
2. Importer un fichier dans le même répertoire
Vous pouvez créer vos propres modules en écrivant un fichier Python, puis l'importer dans un autre fichier.
Exemple : Module de calculs géométriques
Fichier geometrie.py (le module) :
def aire_rectangle(longueur, largeur):
"""Calcule l'aire d'un rectangle."""
return longueur * largeur
def aire_cercle(rayon):
"""Calcule l'aire d'un cercle."""
import math
return math.pi * rayon ** 2
def perimetre_rectangle(longueur, largeur):
"""Calcule le périmètre d'un rectangle."""
return 2 * (longueur + largeur)
Fichier programme.py (utilise le module) :
import geometrie
# Utiliser les fonctions du module geometrie
print(geometrie.aire_rectangle(5, 3)) # 15
print(geometrie.aire_cercle(10)) # 314.159...
print(geometrie.perimetre_rectangle(5, 3)) # 16
Comment ça marche ?
Quand Python voit import geometrie, il cherche un fichier geometrie.py dans le même répertoire que programme.py, l'exécute, et vous donne accès à tout ce qui y est défini.
Exemple : Module de jeux
Fichier jeux.py :
import random
def lancer_de(nombre_faces=6):
"""Simule le lancer d'un dé."""
return random.randint(1, nombre_faces)
def pile_ou_face():
"""Simule un pile ou face."""
return random.choice(["Pile", "Face"])
def tirage_loto(nb_numeros=5, maximum=49):
"""Tire des numéros aléatoires sans répétition."""
return random.sample(range(1, maximum + 1), nb_numeros)
Fichier mon_jeu.py :
from jeux import lancer_de, pile_ou_face
print("Lancer de dé:", lancer_de()) # ex: 4
print("Pile ou face:", pile_ou_face()) # ex: Pile
print("Dé à 20 faces:", lancer_de(20)) # ex: 17
Organisation des fichiers
mon_projet/
├── geometrie.py ← Module
├── jeux.py ← Module
├── programme.py ← Utilise geometrie
└── mon_jeu.py ← Utilise jeux
Bonnes pratiques
- Un module = un fichier avec des fonctions liées (géométrie, jeux, calculs...)
- Donnez des noms clairs aux modules (évitez
module1.py,truc.py) - Documentez vos fonctions avec des docstrings (
"""...""")
3. Installer de nouveaux modules
Python a une immense bibliothèque de modules créés par la communauté. Pour les utiliser, il faut d'abord les installer.
La bibliothèque PyPI
PyPI (Python Package Index) est le dépôt officiel qui contient plus de 500 000 modules Python : pour faire des graphiques, des sites web, de l'intelligence artificielle, des jeux...
Exemples de modules populaires :
requests: pour faire des requêtes HTTPflask: pour créer des applications webnumpy: pour les calculs scientifiquespygame: pour créer des jeux
Installation avec uv
uv est un outil moderne pour gérer les dépendances Python. Il est beaucoup plus rapide que pip (l'outil classique).
Installer un module
Ce qu'il se passe :
uvcherche le modulerequestssur PyPI- Télécharge le module et toutes ses dépendances (autres modules dont il a besoin)
- Installe le module dans votre projet
- Met à jour le fichier
pyproject.toml(qui liste tous les modules de votre projet) - Met à jour le fichier
uv.lock(qui verrouille les versions exactes)
Fichiers créés
pyproject.toml: liste les modules dont votre projet a besoinuv.lock: verrouille les versions exactes pour garantir la reproductibilité.venv/: dossier contenant tous les modules installés (environnement virtuel)
Utiliser le module installé
Après uv add requests, vous pouvez l'importer normalement :
import requests
response = requests.get("https://api.github.com")
print(response.status_code) # 200 si tout va bien
Désinstaller un module
Installer les dépendances d'un projet existant
Si vous récupérez un projet Python qui a un fichier pyproject.toml, installez toutes les dépendances avec :
Recommandation
Utilisez uv pour tous vos nouveaux projets. C'est l'avenir de la gestion de dépendances en Python.
4. Exercices
Exercice 1 : Module de conversions
Créez un fichier conversions.py avec les fonctions suivantes :
celsius_vers_fahrenheit(c): convertit des degrés Celsius en Fahrenheitfahrenheit_vers_celsius(f): convertit des degrés Fahrenheit en Celsiuskm_vers_miles(km): convertit des kilomètres en miles (1 km = 0.621371 miles)
Créez ensuite un fichier test_conversions.py qui importe ce module et teste les trois fonctions.
Solution
Fichier conversions.py :
def celsius_vers_fahrenheit(c):
"""Convertit des degrés Celsius en Fahrenheit."""
return c * 9/5 + 32
def fahrenheit_vers_celsius(f):
"""Convertit des degrés Fahrenheit en Celsius."""
return (f - 32) * 5/9
def km_vers_miles(km):
"""Convertit des kilomètres en miles."""
return km * 0.621371
Fichier test_conversions.py :
Exercice 2 : Utiliser le module math
Sans regarder la documentation, essayez de deviner ce que font ces fonctions du module math :
Exécutez le code pour vérifier vos hypothèses.
Solution
Exercice 3 : Import sélectif
Réécrivez ce code en important seulement les fonctions nécessaires (avec from ... import ...) :
Exercice 4 : Module de statistiques
Créez un fichier stats.py avec les fonctions :
moyenne(liste): calcule la moyenne d'une liste de nombresminimum(liste): renvoie le plus petit élémentmaximum(liste): renvoie le plus grand élément
Testez votre module avec [10, 15, 8, 22, 19].
Solution
Fichier stats.py :
def moyenne(liste):
"""Calcule la moyenne d'une liste de nombres."""
return sum(liste) / len(liste)
def minimum(liste):
"""Renvoie le plus petit élément."""
return min(liste)
def maximum(liste):
"""Renvoie le plus grand élément."""
return max(liste)
Test :
5. Résumé
- Un module est un fichier Python (
.py) contenant du code réutilisable import modulecharge un module (standard ou local)- Modules standard :
random,math,time, etc. (fournis avec Python) - Modules locaux : vos propres fichiers
.pydans le même répertoire - PyPI : bibliothèque en ligne avec 500 000+ modules
uv add: installe un module depuis PyPI (rapide et moderne)uv sync: installe toutes les dépendances d'un projet existant