cours1 min de lecture

Utilisation de bibliothèques

Importer un module Python, lire une documentation et mobiliser math, random et statistics.
programme

Introduction

Vous n'avez pas à tout réécrire vous-même. Calcul d'une racine carrée, tirage aléatoire, moyenne d'une liste, manipulation d'un fichier : toutes ces opérations existent déjà, prêtes à l'emploi, dans la bibliothèque standard de Python — installée d'office. Apprendre à utiliser une bibliothèque, c'est apprendre à lire sa documentation et à mobiliser ses fonctions avec la bonne syntaxe d'import.

L'objectif n'est pas de connaître toutes les bibliothèques par cœur — il y en a des centaines — mais de savoir lire une doc et importer ce dont on a besoin.

Importer un module

Un module est un fichier Python qui regroupe des fonctions et des constantes liées à un thème (mathématiques, hasard, statistiques, dates…). Pour utiliser un module, il faut d'abord l'importer.

import math
print(math.sqrt(16))      # 4.0
print(math.pi)            # 3.141592653589793

L'instruction import math rend disponible l'objet math, qu'on utilise ensuite avec la notation point : math.sqrt, math.pi.

Trois formes d'import

# Forme 1 : import du module entier
import math
math.sqrt(16)

# Forme 2 : import d'éléments précis
from math import sqrt, pi
sqrt(16)
print(pi)

# Forme 3 : import avec alias
import math as m
m.sqrt(16)
FormeAvantageInconvénient
import mathOrigine claire : math.sqrtUn peu plus verbeux
from math import sqrtPlus court : sqrt(16)Conflit possible avec un autre sqrt
import math as mTrès courtLisibilité dépend de l'alias
Bonne habitude : préférer import math à from math import *. Le second importe tout d'un seul coup et pollue l'espace de noms — vous ne savez plus d'où vient une fonction.

Quel import permet d'écrire directement pi (sans préfixe) dans le code ?

Lire une documentation

Toute fonction d'une bibliothèque a trois niveaux de doc accessibles sans quitter Python :

import math
help(math.sqrt)
print(math.sqrt.__doc__)

Et bien sûr la documentation officielle en ligne : docs.python.org/fr/3/library/.

⏵ Ctrl+↵ pour exécuter
Aucune exécution pour l'instant.

Sortie (extrait) :

Help on built-in function factorial in module math:

factorial(n, /)
    Find n!.

Quand vous découvrez une fonction, posez-vous quatre questions :

  1. Quel est son nom complet (module + fonction) ?
  2. Quels paramètres prend-elle ?
  3. Que retourne-t-elle ?
  4. Y a-t-il une précondition sur les arguments ?

Le module math

Le module math fournit les fonctions et constantes mathématiques usuelles.

Fonction / constanteRôle
math.piConstante π3,14159\pi \approx 3{,}14159
math.eConstante e2,71828e \approx 2{,}71828
math.sqrt(x)Racine carrée de xx
math.floor(x)Partie entière par défaut
math.ceil(x)Partie entière par excès
math.factorial(n)n!n! pour un entier n0n \geq 0
math.log(x)Logarithme naturel de xx
math.cos(x), math.sin(x)Trigonométrie (argument en radians)
⏵ Ctrl+↵ pour exécuter
Aucune exécution pour l'instant.

Sortie attendue :

Aire d'un disque de rayon 5 : 78.54
sqrt(2)    = 1.4142
floor(3.7) = 3
ceil(3.2)  = 4
5!         = 120

Le module random

Le module random permet de générer des nombres pseudo-aléatoires. Utile pour simulations, jeux, échantillonnages.

FonctionRôle
random.random()Un flottant aléatoire dans [0,1[[0, 1[
random.randint(a, b)Un entier aléatoire dans {a,a+1,,b}\{a, a+1, \dots, b\} (bornes incluses)
random.choice(s)Un élément aléatoire d'une séquence non vide
random.shuffle(l)Mélange une liste sur place
random.sample(s, k)Échantillon de k éléments distincts
⏵ Ctrl+↵ pour exécuter
Aucune exécution pour l'instant.

Sortie (variera car aléatoire) :

Dé : 4
Pièce : Pile
Jeu mélangé : ['Valet', 'Roi', '10', 'Dame']
Pseudo-aléatoire : les nombres produits sont calculés par un algorithme déterministe à partir d'une graine (seed). Avec random.seed(42), vous obtenez la même suite à chaque exécution — utile pour reproduire un bug, à éviter pour un vrai tirage.

Le module statistics

Pour les statistiques descriptives élémentaires : moyenne, médiane, écart-type.

FonctionRôle
statistics.mean(data)Moyenne arithmétique
statistics.median(data)Médiane
statistics.mode(data)Mode (valeur la plus fréquente)
statistics.stdev(data)Écart-type (échantillon)
statistics.variance(data)Variance (échantillon)
⏵ Ctrl+↵ pour exécuter
Aucune exécution pour l'instant.

Sortie attendue :

Moyenne   : 12
Médiane   : 12.0
Écart-type: 2.54
Mode      : 12

Remarquez que statistics.mean fait exactement ce que vous écririez à la main avec sum(notes) / len(notes) — mais avec en prime la gestion des listes vides (lève une exception parlante).

Trois bibliothèques, trois usages typiques

math

Quand le calcul est mathématique : racine carrée, trigonométrie, puissances, constantes (pi, e).

random

Quand il faut introduire du hasard : simulations, tirages, jeux, brouillage d'une liste.

statistics

Quand on a une liste de mesures : moyenne, médiane, dispersion.

Quelle fonction tire un entier aléatoire entre 1 et 6 inclus ?

Conseils méthodiques

  • Ne réécrivez pas une fonction qui existe déjà dans la bibliothèque standard. C'est l'objet même de l'item .
  • Citez la doc quand vous utilisez une fonction non-évidente : un commentaire # voir docs.python.org math.gcd aide la relecture.
  • Importez en tête de fichier, pas au milieu du code. C'est une convention universelle en Python.

Pièges courants

  • random.randint(a, b) inclut b. Contrairement à range(a, b) qui l'exclut.
  • math.log(x) est le logarithme naturel (base ee), pas le log décimal. Pour le log décimal : math.log10(x).
  • Les angles de math.cos et math.sin sont en radians, pas en degrés. Pour convertir : math.radians(deg).
  • statistics.mean([]) lève une exception. Penser à vérifier la liste d'abord, ou attraper l'exception.
  • from math import * : à proscrire — masque l'origine des noms.

Pour aller plus loin

Au-delà de la bibliothèque standard, Python dispose d'un écosystème gigantesque de bibliothèques tierces : numpy pour le calcul scientifique, matplotlib pour les graphiques, requests pour le Web, pandas pour les tableaux de données. La démarche reste la même : lire la doc, importer, utiliser.