Modules
Utilisez un notebook de https://notebook.basthon.fr/ pour exécuter les divers exemples et exercices
Import et utilisation des modules en python.
Un module (aussi appelé bibliothèque ou library) est un ensemble de fonctions utiles, utilisables dans de nombreux programmes. Plutôt que de refaire à chaque fois ces fonctions ou (c'est pire) de les copier/coller dans chaque programme, on les importe directement pour les utiliser.
Certains modules sont très utiles en python scientifique :
- numpy : très utilisé pour ses structures de matrices et tableaux
- matplotlib : pour créer des graphiques en python
- scipy : résolution d'équations différentielles
- pillow : gestion d'images
- sklearn : machine learning
Ils ne viennent pas automatiquement lorsque l'on installe python, mais beaucoup sont déjà installés si vous utilisez l'interpréteur de spyder ou encore les notebooks de https://colab.research.google.com. Nous plus tard comment installer ses propres modules, pour l'instant nous allons uniquement utiliser ceux fournis par python (et ils sont déjà nombreux).
Il existe de nombreux modules, réalisant une foultitude d'opérations. Avant de se mettre à coder quelque chose, commencez toujours par vérifier (google est votre ami) s'il n'existe pas un module tout fait, vous gagnerez du temps. Python en fournit déjà de nombreux
Utiliser un module
Pour utiliser un module, il faut commencer par l'importer avec la commande import
. Par exemple avec le module math
.
Il existe plusieurs façon de faire, mais toutes fonctionnent sur le même principe : python va lire le module et associer les noms qu'il trouve à un espace de nom. Le mot clé utilisé est import <nom de module>
ou une de ses variations.
Importation directe du module
On met le nom complet avant chaque appel :
import math
pi_sur_deux = math.pi / 2
x = math.cos(pi_sur_deux)
Lors de la ligne import math
python crée un espace de nom qu'il appelle math
. Il lit ensuite math avec cet espace de nom. Donc tout ce qui est défini dans math, le sera dans l'espace de nom nommé math
. On accède ensuite aux noms de math par la notation .
.
La notation A.B
: se lit ainsi on cherche le nom B
dans l'espace de nom A
Importation d'une méthode particulière
Ceci peut être dangereux si des fonctions différentes possèdent le même nom.
from math import cos, pi #importation directe de cos et de pi
x = cos(pi / 2)
Lors de la ligne from math import cos, pi
python crée un espace de nom pour l'import. Il lit ensuite math avec cet espace de nom. Une fois la lecture finie, il cherche les noms cos
et pi
et les associe à l'espace de nom global.
Dans cette façon de faire, on associe des noms du module math à l'espace de nom global. Il n'y a aucune manière d'accéder aux autres noms défini dans math avec cette façon de faire.
Importation de toutes les fonctions du modules
Déconseillée dans la plupart des cas car on ne sait pas vraiment ce qui a été importé.
from math import *
y = log(e)
Lors de la ligne from math import *
python lit le module math dans l'espace de nom global.
Importation de modules sous la forme d'alias
Quelques bibliothèques très utilisées s'importent avec des alias par exemple :
import numpy as np
Ou encore :
import matplotlib.pyplot as plt
Cela permet de raccourcir le nom, il suffira de taper plt
à la place de matplotlib.pyplot
mais cela se fait au détriment de la lisibilité. Il n'est donc pas recommandé du tout de le faire avec d'autres bibliothèque même s'il est tout à fait possible d'écrire ce genre d'horreurs :
import math as m
import random as r
Exercices avec le module random
Un module très utile dans python est le module random
Utilisez le pour répondre aux questions suivantes :
Générez un entier aléatoire entre 10 et 234.
solution
solution
On utilise la fonction randrange
du module random
:
>>> import random
>>> random.randrange(10, 235)
51
Générez un nombre réel uniformément dans $[0, 1[$
solution
solution
On utilise la fonction random
du module random
:
>>> import random
>>> random.random()
0.07350177375024702
Choisissez 2 éléments avec remise de la liste ["pomme", "abricot", "orange", "cerise"]
solution
solution
On utilise la fonction choices
du module random
:
>>> import random
>>> random.choices(["pomme", "abricot", "orange", "cerise"], k=2)
['pomme', 'pomme']
Choisissez 2 éléments sans remise de la liste ["pomme", "abricot", "orange", "cerise"]
solution
solution
On utilise la fonction sample
du module random
:
>>> import random
>>> random.sample(["pomme", "abricot", "orange", "cerise"], k=2)
['cerise', 'pomme']