| @@ -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. | |||||