Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
python:bases:module [2021/08/11 09:19] – modification externe 127.0.0.1 | python:bases:module [2022/09/03 10:33] (Version actuelle) – [1.1 Utilisation] phil |
---|
{{ :suivant.png?nolink&30|}} {{ :retour.png?nolink&30|}} [[python:bases:accueilmodule|{{ :iconemaison.jpg?nolink&30|Sommaire Les modules et packages}}]] | [[python:bases:accueilmodule|{{ :iconemaison.jpg?nolink&25|Sommaire Les modules et packages}}]] |
| |
===== Les modules et packages : généralités ===== | ===== Python - Modules et packages - Généralités ===== |
{{ :micropython:python.png?nolink&80|}} | |
| |
[Mise à jour le :2/8/2021] | [Mise à jour le :2/8/2021] |
* **Mots-clés** : module, importation, package. | * **Mots-clés** : module, importation, package. |
| |
<note important>Les mots ci-dessous sont dits "réservés". Ils ne peuvent pas être utilisés comme nom de variable. Les mots __soulignés__ sont une nouveauté de Python 3. Les mots en **gras** sont utilisés dans cette page.</note> | <callout type="warning" icon="true">Les mots ci-dessous sont dits "réservés". Ils ne peuvent pas être utilisés comme nom de variable. Les mots __soulignés__ sont une nouveauté de Python 3. Les mots en **gras** sont utilisés dans cette page.</callout> |
| |
| and | continue | finally | is | raise | | | and | continue | finally | is | raise | |
==== 1. Les modules ==== | ==== 1. Les modules ==== |
| |
<note>Un module est une **liste de fonctions et de variables** contenues dans un **fichier**. Pour travailler avec les fonctionnalités du module, il suffit de l'**importer**.</note> | <callout type="primary" icon="true">Un module est une **liste de fonctions et de variables** contenues dans un **fichier**. Pour travailler avec les fonctionnalités du module, il suffit de l'**importer**.</callout> |
| |
=== 1.1 Utilisation ==== | === 1.1 Utilisation ==== |
**1.1.1 Méthode 1 : import** | **1.1.1 Méthode 1 : import** |
| |
<note important>L'importation d'un module se fait à l'aide du mot-clé **import**.</note> | <callout type="warning" icon="true">L'importation d'un module se fait à l'aide du mot-clé **import**.</callout> |
| |
//Exemples // : importation des modules **math** et **random** | //Exemples // : importation des modules **math** et **random** |
**1.1.2 Méthode 2 : from ... import** | **1.1.2 Méthode 2 : from ... import** |
| |
<note tip>On peut éviter de préfixer les fonctions avec le nom du module ou limiter le nombre d'éléments importés en utilisant **//from ... import//** à condition de ne pas importer des modules possédant des méthodes ayant le même nom.</note> | <callout type="tip" icon="true">On peut éviter de préfixer les fonctions avec le nom du module ou limiter le nombre d'éléments importés en utilisant **//from ... import//** à condition de ne pas importer des modules possédant des méthodes ayant le même nom.</callout> |
| |
// Exemple 1 // | // Exemple 1 // |
</code> | </code> |
| |
<note tip>**dir**(//nom_module//) affiche la liste des fonctions. \\ **help("**//nom_module//**")** donne une description de ces fonctions</note> | <callout type="tip" icon="true">**dir**(//nom_module//) affiche la liste des fonctions. \\ **help("**//nom_module//**")** donne une description de ces fonctions</callout> |
| |
//Exemple// | //Exemple// |
Lorsqu'on écrit //import math//, cela crée un **espace de noms** dénommé //math//, contenant les variables et les fonctions du module //math//. Lorsqu'on écrit //math.sqrt(25)//, on précise à l'interpréteur que l'on souhaite exécuter la fonction //sqrt// située dans l'espace de nom //math//. Il est ainsi possible d'utiliser une autre fonction sqrt située dans un autre module ou dans créer une dans l'espace de nom principal. | Lorsqu'on écrit //import math//, cela crée un **espace de noms** dénommé //math//, contenant les variables et les fonctions du module //math//. Lorsqu'on écrit //math.sqrt(25)//, on précise à l'interpréteur que l'on souhaite exécuter la fonction //sqrt// située dans l'espace de nom //math//. Il est ainsi possible d'utiliser une autre fonction sqrt située dans un autre module ou dans créer une dans l'espace de nom principal. |
| |
<note tip>Il est possible de modifier l'intitulé d'un espace de nom avec **as**</note> | <callout type="tip" icon="true">Il est possible de modifier l'intitulé d'un espace de nom avec **as**.</callout> |
| |
//Exemple// | //Exemple// |
| |
| |
<note warning>Si l'importation du module ne fonctionne pas, c'est certainement qu'il n'est pas installé. L'installation d'un module passe par un gestionnaire de paquets comme **[[python:outils:pip|pip]]** ou **[[python:outils:anaconda|conda]]**. \\ Voir le site sur lequel il se trouve pour la procédure. | <callout icon="fa fa-hand-stop-o" color="red" title="ATTENTION">Si l'importation du module ne fonctionne pas, c'est certainement qu'il n'est pas installé. L'installation d'un module passe par un gestionnaire de paquets comme **[[python:outils:pip|pip]]** ou **[[python:outils:anaconda|conda]]**. \\ Voir le site sur lequel il se trouve pour la procédure. |
| |
Un module installé sous **VSCode** dans un terminal PowerShell avec la commande : | Un module installé sous **VSCode** dans un terminal PowerShell avec la commande : |
<code powershell *.ps>python -m pip install nomModule ou | <code powershell *.ps>python -m pip install nomModule ou |
pip install nomModule</code> est disponible **après son redémarrage**.</note> | pip install nomModule</code> est disponible **après son redémarrage**.</callout> |
| |
| |
Lorsqu'on dispose d'un grand nombre de modules, il peut être intéressant de les organiser dans des répertoires. Un répertoire rassemblant des **modules** est appelé package. | Lorsqu'on dispose d'un grand nombre de modules, il peut être intéressant de les organiser dans des répertoires. Un répertoire rassemblant des **modules** est appelé package. |
| |
<note>Un **package** sert à regrouper plusieurs modules. En pratique les packages sont des **répertoires**. Le nom du package est le nom du répertoire.</note> | <callout type="primary" icon="true">Un **package** sert à regrouper plusieurs modules. En pratique les packages sont des **répertoires**. Le nom du package est le nom du répertoire.</callout> |
| |
{{ :python:bases:exmodule.png?nolink|}} | {{ :python:bases:exmodule.png?nolink|}} |
Si le fichier **.py** contient uniquement des définitions de fonction on l'appelle un **module**. | Si le fichier **.py** contient uniquement des définitions de fonction on l'appelle un **module**. |
| |
<note important>Un même **fichier .py** peut jouer le rôle de **script** ou de **module** suivant son utilisation.</note> | <callout type="warning" icon="true">Un même **fichier .py** peut jouer le rôle de **script** ou de **module** suivant son utilisation.</callout> |
| |
* **La variable global <nowiki>__name__</nowiki>** | * **La variable global <nowiki>__name__</nowiki>** |
<note>A l’intérieur d’un module, le nom du module (en tant que chaîne de caractères) peut être obtenu grâce à la **variable globale <nowiki>__name__</nowiki>**.</note> | <callout type="primary" icon="true">A l’intérieur d’un module, le nom du module (en tant que chaîne de caractères) peut être obtenu grâce à la **variable globale <nowiki>__name__</nowiki>**.</callout> |
| |
Quand on utilise un fichier en tant que script, la variable globale <nowiki>__name__</nowiki> prend pour valeur '**<nowiki>__main__</nowiki>**'. Ceci permet d’avoir dans le fichier **un bloc d’instructions** qui sera exécuté uniquement lorsque le fichier est lancé en tant que script. | Quand on utilise un fichier en tant que script, la variable globale <nowiki>__name__</nowiki> prend pour valeur '**<nowiki>__main__</nowiki>**'. Ceci permet d’avoir dans le fichier **un bloc d’instructions** qui sera exécuté uniquement lorsque le fichier est lancé en tant que script. |