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 modulemath
.La fonction
sqrt()
n'est toujours pas disponible bien que le modulemath
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 quesqrt()
est une fonction du modulemath
.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 demath
.
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
, ...
>>> from math import log10
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> from scipy.stats import linregress
Exercices d'application