Les modules.

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 !