Un module est un fichier Python qui contient un programme que l’on peut exécuter de manière indépendante ou bien qui regroupe des attributs que l’on peut charger dans un programme principal grâce à l’instruction import.
Pour faciliter leur maintenance, la plupart des programmes Python sont constitués d’un code principal sur lequel vient se greffer différents modules importés. Il s’agit soit de modules qui appartiennent à la bibliothèque standard de Python (par exemple le module math) soit de modules écrits par le programmeur lui-même. La bibliothèque standard de Python contient des dizaines de modules.
Amusons-nous à importer des attributs (c’est-à-dire des fonctions ou des variables) du module math. Ce dernier contient par exemple la variable pi qui correspond à la valeur approchée 3.141592653589793.

Si vous voulez calculer le périmètre d’un cercle, vous en aurez besoin. Pour accéder à cette variable, il existe deux méthodes :
1ère méthode d’importation : l’instruction from math import pi
#!/usr/bin/env python3 # -*- coding: utf8 -*- from math import pi #Importation de la constante pi du module math rayon = 3 perimetre = 2*pi*3 print(perimetre)
L’appel de la fonction print() retourne le résultat 18.84955592153876
Si je n’avais pas pris soin d’importer la constante pi, Python m’aurait retourné cette exception :
NameError: name 'pi' is not defined
Comme je l’ai déjà précisé, il y a différentes manières d’importer un module et/ou les variables qu’il contient. Dans le programme qui calcule le périmètre, je n’ai pas importé le module mais seulement la constante pi qui devient alors une variable de mon programme principal.
from math import pi
C’est-à dire que si j’écris print(math), j’obtiens une erreur :
NameError: name 'math' is not defined
Tandis que si j’écris print(pi), j’obtiens ceci :
3.141592653589793
C’est donc bien la preuve que j’ai, dans mon programme principal, uniquement la variable pi.
Il est possible d’importer tous les attributs du module math en utilisant l’astérisque :
from math import *
2ème méthode d’importation : l’instruction import math
#!/usr/bin/env python3 # -*- coding: utf8 -*- import math #importation du module math rayon = 3 perimetre = 2*math.pi*3 print(perimetre)
Dans cet exemple, j’ai importé le module math qui devient donc une nouvelle variable de mon programme principal. Mais dans ces conditions, la constante pi est accessible uniquement en utilisant cette syntaxe : math.pi
En langage Python où tout est objet, le point est un signe d’appartenance. pi est un attribut de l’objet math.
Si j’écris print(math), j’obtiens ce résultat :
<module ‘math’ (built-in)>
Si j’écris print(pi), Python me retourne une exception :
NameError: name 'pi' is not defined
Alors que si j’écris print(math.pi), j’accède à la variable pi qui est dans le module math et j’obtiens bien le résultat escompté :
3.141592653589793
La fonction pow (power en anglais)
Prenons un autre exemple, je veux importer la fonction pow du module math. Cette dernière permet d’élever un nombre x à la puissance y:
#!/usr/bin/env python3 # -*- coding: utf8 -*- import math #importation du module math nombre = 3 resultat = math.pow(nombre, 4) print(resultat)
Dans cet exemple, j’ai élevé le nombre trois à la puissance 4. Pour ce faire, j’ai passé deux paramètres à la fonction pow :
- la variable nombre (3)
- la puissance (4)
Le résultat obtenu est 81.
La fonction sqrt()
sqrt() permet de calculer la racine carré du nombre passé en argument :
#!/usr/bin/env python3 # -*- coding: utf8 -*- import math #importation du module math nombre = 36 resultat = math.sqrt(36) print(resultat)
Le résultat obtenu est 6.
Utiliser dir() pour afficher tous les attributs d’un module
Si je souhaite afficher tous les attributs du module math, il me suffit d’utiliser la fonction dir (bien sûr après avoit chargé le module math!).
#!/usr/bin/env python3 # -*- coding: utf8 -*- import math #importation du module math print(dir(math))
Résultat :

Le module webbrowser (navigateur)
Comme je l’ai écrit plus haut, la bibliothèque standard Python contient des dizaines de modules. Outre le module math, on trouve également le module webbrowser. Ce dernier contient la fonction open(url, new = 0, autoraise = true).
#!/usr/bin/env python3 # -*- coding: utf8 -*- import webbrowser webbrowser.open("https://fr.wikipedia.org")
Ce code provoque l’ouverture de la page wikipédia dans le navigateur défini par défaut. Pour ce faire, j’ai passé l’url de la page en argument à la fonction open() sous la forme d’une chaîne de caractères.

Importer un programme en tant que module dans une autre application
Un module peut aussi être un programme que l’on peut lancer en tant qu’application principale ou bien que l’on peut charger dans un autre programme plus important. Voici un exemple très concret :

J’ai créé un programme qui s’appelle Mia ĝardeno. C’est de l’espéranto et ça signifie mon jardin en français. Il y a plusieurs onglets qui ouvrent notamment un agenda, un calendrier et un logiciel de post-it. J’ai créé moi-même ces trois applications que je peux lancer de façon tout à fait indépendante ou que je peux inclure dans un autre programme. C’est le cas ici : Je les ai importées dans mon application Mia ĝardeno (ligne 7, 8 et 9).
#!/usr/bin/env python3 # -*- coding: utf8 -*- from tkinter import* # Importation du module tkinter from module_globs import Globales # Importation du module de redimensionnement import os # Fonctions basiques du système d'exploitation from PIL import Image, ImageTk # Module PIL (traitement des images importées) from calendrier import Calendar from agenda import Agenda from module_notes import Notes
L’instruction if __name__ == « __main__ »:
Pour déterminer si l’application « post-it » doit être lancée en tant que programme principal ou bien importée en tant que module dans un autre programme, j’utilise l’instruction if __name__ == « __main__ »:
Cette instruction se trouve par exemple à la fin du code du logiciel de post-it :
# PROGRAMME PRINCIPAL: if __name__ == "__main__": note = Notes() # Création de l'objet note par instanciation de la classe Notes. note.notes() # Appel de la méthode notes.
Conclusion
L’importation de modules est une opération très courante en Python. Elle permet de faire appel au fonctions présentes dans la bibliothèque standard du langage qu’une communauté de développeurs ne cesse d’enrichir. Elle permet également d’importer des applications en tant que modules dans d’autres programmes.