Table des matières

Sommaire Les modules et packages

Python - Modules et packages - Généralités

[Mise à jour le :2/8/2021]

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.
and continue finally is raise
as def for lambda return
assert del from None True
async elif global nonlocal try
await else if not while
break except import or with
class False in pass yield

1. Les modules

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.

1.1 Utilisation

1.1.1 Méthode 1 : import

L'importation d'un module se fait à l'aide du mot-clé import.

Exemples : importation des modules math et random

*.py
import math # avec cette déclaration, il faut préfixer les méthodes avec le nom du module (ici math) 
a= math.sqrt(16) # la fonction utilisée est préfixée par le nom du module
print(a) # renvoie 4.0 dans la console
*.py
import random
print(random.randint(1,10)) # exemple de résultat : 3

1.1.2 Méthode 2 : from … import

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.

Exemple 1

*.py
from math import * # on importe le module math, toutes les méthodes et variables sont accessibles 
                   # sans se référer à math 
a = sqrt(16) 
print(a) # renvoie 4.0 dans la console

Exemple 2

from math import fabs, e, pi # seules les fonctions valeur absolue, e et pi sont importés
 
from random import * # on importe la bibliothèque complète
print(randint(1,10)) # exemple de résultat : 1
 
from datetime import datetime # On importe une seule fonction : datetime
datetime.now() # exemple de résultat : datetime.datetime(2019, 1, 3, 20, 6, 18, 490635)
dir(nom_module) affiche la liste des fonctions.
help(“nom_module”) donne une description de ces fonctions

Exemple

1.1.3 Espace de noms

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.

Il est possible de modifier l'intitulé d'un espace de nom avec as.

Exemple

import math as calcul
a=calcul.sqrt(25) 
print(a) # renvoie 5.0 dans la console

1.1.4 Quelques modules

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 pip ou 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 :

*.ps
python -m  pip install nomModule ou 
pip install nomModule

est disponible après son redémarrage.

1.2 Création

Exemple

fibo.py
# Fibonacci numbers module
 
def fib(n):    # write Fibonacci series up to n
    a, b = 0, 1
    while a < n:
        print(a, end=' ')
        a, b = b, a+b
    print()
 
def fib2(n):   # return Fibonacci series up to n
    result = []
    a, b = 0, 1
    while a < n:
        result.append(a)
        a, b = b, a+b
    return result
test1.py
import fibo # Importation de la totalité des fonctions
 
fibo.fib(50) # résultat : 0 1 1 2 3 5 8 13 21 34
test2.py
from fibo import fib # importation de la seule fonction fib
 
fib(50) # résultat : 0 1 1 2 3 5 8 13 21 34

2. Les packages

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.

Un package sert à regrouper plusieurs modules. En pratique les packages sont des répertoires. Le nom du package est le nom du répertoire.

Exemple : le fichier module1.py contenant les fonctions carre et cube est placé dans le répertoire package1.

module1.py
def carre(a)
    return(a*a)
 
def cube(a)
    return(a*a*a)

Les fonctions carre et cube peuvent être utilisées en important package1.module1

test.py
from package1.module1 import carre
 
x=5
print(f"Le carré de {x} vaut {carre(x)}") # Le carré de 5 vaut 25

3. Fichier .py, script ou module?

En Python, lorsqu’on crée un fichier qui rassemble des instructions, on appelle ce fichier un script et on le sauvegarde avec une extension .py, par exemple test.py.

Si le fichier .py contient uniquement des définitions de fonction on l'appelle un module.

Un même fichier .py peut jouer le rôle de script ou de module suivant son utilisation.
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 __name__.

Quand on utilise un fichier en tant que script, la variable globale __name__ prend pour valeur '__main__'. 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.

module1.py
def carre(a)
    return(a*a)
 
def cube(a)
    return(a*a*a)
 
if __name__ == "__main__":                    # Si module1 est appelé en tant que script :
    x = 3                                     # ces deux lignes sont exécutées
    print(f"Le carré de {x} vaut {carre(x)}") # Résultat : Le carré de 3 vaut 9
test.py
# Le module est appelé dans le fichier test.py
from package1.module1 import carre
 
x=5                                       # Le code sous if __name__ == "__main__" n'est pas exécuté
print(f"Le carré de {x} vaut {carre(x)}") # Résultat : Le carré de 5 vaut 25

Télécharger le répertoire du projet VSCode ici

Résumé

Pour aller plus loin ...

1)
Fonctions toujours disponibles.