Les modules en Python regroupent l'unité d'organisation de plus haut niveau pour les programmes. Les modules fournissent un moyen facile d'organiser des composants afin de former un système.
Les modules remplissent plusieurs rôles,
dont celui de conserver de manière permanente du code dans un fichier.
Contrairement au code tapé à l'invité interactif le
code contenu dans un module est conservé, de plus il peut être
rechargé et re-éxecuté autant de fois que nécessaire.
Un module est aussi une partition de l'espace de noms du système,
car dès qu'un module est chargé tous se qui se trouve dans
se module "existe", le code que vous exécutez ou les objets créés
sont toujours contenus de façon implicite dans un module. Du point
de vue fonctionnel, les modules permettent, d'une façon pratique,
de partager des ressources entre différents programmes.
Notion
de base sur les modules.
Un module est très simple à
créer car ce n'est que du code, Python, ou dérivé
du C. Les trois instructions importantes concernant les modules sont "import",
"from" et "reload". Pour qu'un module soit importable il faut que le répertoire
soit visible par Python (PYTHONPATH).
Utilisation.
Pour voir quels répertoires sont visible par Python il faut importer le module "sys" :
>>> import sys
>>> sys.path
Ceci vous indiquera les répertoires
accessibles.
L'instruction
import.
L'instruction "import <module>" importe
tout le module <module>, en exécutant le total du module. Le
module est exécuté en premier avant de pouvoir travailler
sur les objets.
>>> import <module>
L'instruction
from.
L'instruction "from" s'utilise avec "import"
de la manière "from <module> import <nom>". Là seulement
l'objet <nom> du module <module> sera importé, le code restant
du module sera aussi exécuté, mais les objets ne seront pas
mémorisés et les éventuelles variables ne seront pas
affectées. Si <nom> est remplacé par *, on obtient alors
une copie de tous les noms définis a la racine du module.
>>> from <module> import <nom_1>, <nom_2>
>>> from <module_2> import *
La grande différence entre "import
<module>" et "from <module> import *" est que les noms ne sont pas
mémorisés sur le même niveau. Le premier sera mémorisé
sous le nom du module, tandis qu'avec "from" la valeur est directement
visible dans la racine.
L'instruction
reload.
La fonction "reload" est en fait un fonction
se trouvant dans __builtin__ (comme print), cette fonction s'exécute
par "reload(<nom>)" et a pour but de recharger le module <nom>. Le
code du module sera de nouveau exécuté depuis le début
et les variables qui auraient pu changer seront remises à leurs
valeurs d'origine. Cette commande ne marche que pour les modules entièrement
importés !
>>> reload(<module>)
Modifier
le chemin de recherche des modules !
Il est possible au lancement d'un programme
de modifier et/ou de rajouter des répertoires accessibles par Python,
afin que celui-ci puisse trouver les modules à charger.
Pour changer les répertoires de recherche :
>>> import sys
>>> sys.path['rep_1\\rep_2'] # protégez l'antislash avec un antislash !!
>>> sys.path # pour voir le résultat
!
Pour ajouter un ou des répertoires de recherche :
>>> import sys
>>> sys.path.append('rep_1\\rep_2') # protégez l'antislash avec un antislash !!
>>> sys.path # pour voir le résultat
!