| @@ -0,0 +1,120 @@ | |||
| % Les modules en Python - Partie 1 | |||
| % Dimitri Merejkowsky | |||
| # Un fichier = un module | |||
| Et oui, vous faites des modules sans le savoir depuis le début :) | |||
| Un fichier `foo.py` correspond *toujours* module `foo` | |||
| **Attention: Ce n'est pas tout à fait réciproque. Le module `foo` peut venir d'autre chose | |||
| qu'un fichier foo.py.** | |||
| # Importer un module | |||
| Ou: accéder à du code provenant d'un *autre* fichier source. | |||
| Imaginons un fichier bonjour.py` contenant seulement une assignation | |||
| d'une variable `a` à l'entier 42 | |||
| ```python | |||
| # Dans bonjour.py | |||
| a = 42 | |||
| ``` | |||
| On peut accéder à cette variable en important le module, par | |||
| exemple depuis l'interpréteur: | |||
| ```python | |||
| >>> import bonjour | |||
| >>> bonjour.a | |||
| 42 | |||
| ``` | |||
| On voit que l'assignation de la variable `a` dans `bonjour.py` est devenue | |||
| un *attribut* du module `bonjour` lorsque `bonjour` a été importé | |||
| Si maintenant on rajoute une fonction `dire_bonjour` dans `bonjour.py`: | |||
| ```python | |||
| # toujours dans bonjour.py | |||
| a = 42 | |||
| a = 42 | |||
| def dire_bonjour(): | |||
| print("Bonjour!") | |||
| ``` | |||
| On peut appeler la fonction `dire_bonjour` depuis l'interpréteur en accédant | |||
| à l'attribut `dire_bonjour` du module `bonjour`: | |||
| ```python | |||
| >>> import bonjour | |||
| >>> bonjour.dire_bonjour() | |||
| Bonjour! | |||
| ``` | |||
| # Différence avec la commande python | |||
| Notez bien que lancer l'interpréteur et taper `import bonjour` dedans n'est pas | |||
| la même chose que lancer `python bonjour.py`. | |||
| Dans le deuxième cas, tout le code dans `bonjour.py` est exécuté, puis la commande python | |||
| se termine. | |||
| Dans le cas de l'interpréteur, on peut utiliser tous les attributs du module et appeler | |||
| les fonctions autant de fois qu'on veut: | |||
| ```python | |||
| >>> import bonjour | |||
| >>> bonjour.dire_bonjour() | |||
| Bonjour! | |||
| >>> bonjour.dire_bonjour() | |||
| Bonjour! | |||
| ``` | |||
| On peut aussi modifier les valeurs des attributs: | |||
| ```python | |||
| >>> import bonjour | |||
| >>> bonjour.a | |||
| 42 | |||
| >>> bonjour.a = 36 | |||
| >>> bonjour.a | |||
| 36 | |||
| ``` | |||
| # Les imports ne sont faits qu'une seule fois | |||
| Il est important de noter que le code à l'intérieur d'un | |||
| module n'est *pas* ré-éxécuté si le module a déjà été | |||
| importé auparavant. | |||
| On peut le voir en mettant du code dans `bonjour.py`, | |||
| en plus des simples définitions de fonctions et assignations | |||
| de variables | |||
| ```python | |||
| # Dans bonjour.py | |||
| print("Je suis le module bonjour et tu viens de m’importer") | |||
| ``` | |||
| ```python | |||
| >>> import bonjour | |||
| Je suis le module foo et tu viens de m’importer | |||
| >>> import bonjour | |||
| <rien> | |||
| ``` | |||
| Il faudra donc redémarrer l'interpréteur à chaque fois que le code dans `bonjour.py` change. | |||
| # La bibliothèque standard | |||
| La bibliothèque standard est une collection de modules directement utilisables fournis à l'installation de Python. | |||
| Exemple: `sys`, `random`, ... | |||
| Toute la bibliothèque standard est documentée - et en Français depuis peu: | |||
| https://docs.python.org/fr/3/library/index.html | |||
| Mettez ce lien dans vos favoris - il vous sera très utile. | |||