Modules, paquets et librairies

Le langage Python est fourni de base avec une palette d'outils (fonctions, méthodes, ...) qui est insuffisante dans certaines situations.

>>> sqrt(2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'sqrt' is not defined

Dans cet exemple, il n'est pas possible d'effectuer une racine carrée avec Python de base !

Pour y remédier, des outils supplémentaires sont implémentés dans des modules de la librairie standard (ex. math, csv, statistics, ...) ou des modules de librairies tierces (ex. numpy, matplotlib, scipy, ...) développées par la communauté Python.

Importation d'un module

Par exemple, le module math de la librairie standard intègre la plupart des fonctions mathématiques.

>>> import math
>>> sqrt(2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'sqrt' is not defined
  • L'instruction import charge le module math.

  • La fonction sqrt() n'est toujours pas disponible bien que le module math soit chargé !

Il faut donc préciser le nom du module lors de l'appel d'une composante (fonction, ...) de ce module.

>>> import math
>>> math.sqrt(2)
1.4142135623730951
  • La syntaxe math.sqrt() signifie que sqrt() est une fonction du module math.

  • Toutes les autres fonctions mathématiques du module math sont ainsi disponibles de cette manière.

Il est parfois pratique de renommer le module lorsque son nom est trop long à écrire à chaque fois !

>>> import math as mt
>>> mt.sqrt(2)
1.4142135623730951
>>> mt.exp(1)
2.718281828459045
  • Dans cet exemple, mt est un alias de math.

Autres possibilités d'importation

Il est envisageable d'importer une seule fonction (ou plusieurs) d'un module.

>>> from math import sqrt
>>> sqrt(2)
1.4142135623730951
  • Seule la fonction sqrt() a été importée.

  • Son appel se fait directement sans préciser le nom du module.

Ou d'importer tous les composantes d'un modules à l'aide du caractère *.

>>> from math import *
>>> sqrt(3)
1.7320508075688772
>>> exp(1)
2.718281828459045

Avertissement

Cependant cette pratique est à éviter tant que possible !

Aide sur un module

La fonction dir() liste toutes les outils disponibles pour un module.

>>> import math
>>> dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'lcm', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'nextafter', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc', 'ulp']
  • Les fonctions (ou méthodes) dont l'identifiant est encadrées par les caractères ___ sont des fonctions cachées.

Et la fonction help() renvoie une aide détaillée du module ou d'une fonction du module.

>>> help(math)
Help on built-in module math:

NAME
   math

DESCRIPTION
   This module provides access to the mathematical functions
   defined by the C standard.

FUNCTIONS
   acos(x, /)
      Return the arc cosine (measured in radians) of x.

      The result is between 0 and pi.

   acosh(x, /)
      Return the inverse hyperbolic cosine of x.

...
>>> help(math.sqrt)
Help on built-in function sqrt in module math:

sqrt(x, /)
   Return the square root of x.

Modules pour les sciences physiques

Plusieurs modules, paquets (ensemble de modules) et librairies (ensemble de paquets) sont souvent rencontrés en sciences physiques tels que math, numpy, matplotlib, scipy, ...

Exemples d'importation.
>>> from math import log10
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> from scipy.stats import linregress

Exercices d'application

Exercice 10 (fonction pH)