Deux modules utiles

(source python.lycee.fr)

D’abord, qu’est-ce qu’un module ? Il s’agit d’une sorte de bibliothèque (un regroupement de fonctions prédéfinies) qui une fois importée permet d’accéder à de nouvelles fonctions. Il en existe beaucoup. On peut citer :

  • le module turtle qui permet de réaliser des dessins géométriques,
  • le module numpy qui permet de faire du calcul scientifique,
  • le module sympy qui permet de faire du calcul formel,
  • le module matplotlib qui permet de faire des graphiques en tout genre. Pour ceux que cela interesse, il existe ce petit tutoriel pour débuter avec matplotlib .

Il y en a beaucoup d’autres, tant dans la nature (https://github.com/search?q=python+module) que dans la bibliothèque standard (http://docs.python.org/3/py-modindex.html), voire des modules que vous aurez codés vous-mêmes. Parmi ces derniers, j’ai choisi de présenter les deux qui, en classe de seconde au moins, me semblent les plus utiles: math et random.

Le module math

C’est un module qui permet d’avoir accès aux fonctions mathématiques comme le cosinus (cos), le sinus (sin), la racine carrée (sqrt), le nombre \pi (pi) et bien d’autres...

>>> from math import *  # importation du module
>>> cos(pi)             # cosinus d'un angle en radian
-1.0
>>> sqrt(25)            # racine carrée
5.0

En plus de ce qui a été cité précédemment, on peut ajouter les fonctions tangente (tan), partie entière (floor), exponentielle (exp) et logarithme népérien (log).

Concernant la fonction partie entière, il y en avait déjà une sans l’apport du module math. Il s’agit de int. Vous noterez une légère différence entre les deux.

>>> floor(12.123)
12.0
>>> int(12.123)
12

Le module random

En anglais “random” signifie “le hasard”. Ce module va nous permettre d’utiliser des fonctions générant des nombres aléatoires. Les deux qui me semblent le plus utile dans un premier temps sont : - random() qui renvoie un nombre aléatoire entre 0 et 1, - choice(liste) qui choisit au hasard un nombre dans une liste donnée.

>>> from random import *
>>> random()
0.34461947461259612
>>> random()
0.024762749258158245
>>> L = [7, 3, 8, 5, 6]
>>> choice(L)
5
>>> choice(L)
3
>>> # cela marche pour une liste de chaine de caractères
>>> liste = ['Pierre', 'Paul', 'Jacques']
>>> choice(liste)
'Jacques'

Pour aller plus loin

Comme dit plus haut, il y a différents types de modules :

  • ceux qui sont inclus dans la version de Python comme random ou math,
  • ceux que l’on peut rajouter comme numpy ou matplotlib,
  • et ceux que l’on peut faire soi-même (il s’agit dans les cas simples d’un fichier Python contenant un ensemble de fonctions).

Mais pour importer un module, la façon de procéder reste la même, ou plutôt les mêmes car il y a deux façons de faire. Voyons cela en prenant comme exemple le module math.

>>> from math import sqrt
>>> sqrt(36)
6.0
>>> cos(0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'cos' is not defined

Le message d’erreur signifie simplement que l’on n’a pas importé la fonction cos. Donc si on recommence

>>> from math import sqrt, cos
>>> sqrt(36)
6.0
>>> cos(0)
1.0

Et si on veut que toutes les fonctions du module soient importées, on peut procéder comme on l’a fait plus haut en utilisant l’étoile *.

>>> from math import *
>>> sqrt(36)
6.0
>>> cos(0)
1.0

C’était la première façon de faire. Voici la deuxième façon de faire pour importer un module.

>>> import math
>>> math.sqrt(36)
6.0
>>> math.cos(0)
1.0

Bien que cette deuxième méthode paraisse plus lourde à écrire, elle peut avoir certains avantages.